在cfscript中编写的代码执行速度比基于等效标记的代码快吗?

时间:2013-07-03 06:40:00

标签: coldfusion cfml

今天,当我尝试增强应用程序的性能时,根据一些ColdFusion开发人员的建议,我将一些基于标记的代码修改为基于cfscript的代码。

但我没有看到任何性能提升。它实际上似乎有点慢。

1 个答案:

答案 0 :(得分:8)

以前的情况 - 我认为 - CFMX7大多数CFScript构造比基于标签的等价物更快。有时候会有很大的不同。从那时起,它确实没有任何内容,实际上CFScript代码有时会比标签中最接近的等效代码慢。例如:

for (i=1; i <= myObj.methodReturningTotal(); i++){
    // stuff here
}

VS

<cfloop index="i" from="1" to="#myObj.methodReturningTotal()#">
   <!--- stuff here --->
</cfloop>

这些表面看起来相同,但基于标记的表达式会快速执行,因为myObj.methodReturningTotal()表达式在for循环的每次迭代中都会被计算,但只有一次在循环开始之前{ {1}}版本。

同样,使用<cfloop>循环列表和查询比使用<cfloop> / for / listLen()组合列表和类似的恶作剧查询要快一些。

真的......使用不同的代码构造不会是一个提高性能的好地方。最好看的地方是查看逻辑以查看是否可以改进,并且 - 更有可能看到收益 - 看看您的数据库交互如何执行。改进SQL,查看索引是否正确等等,可以获得更多收益,因为数据库交互往往是最大的性能瓶颈。

对你好,顺便说一句,因为他没有提供任何实际证据而持怀疑态度并质疑你的CF开发者所说的话。这是处理这些事情和一般生活的好方法。