今天,当我尝试增强应用程序的性能时,根据一些ColdFusion开发人员的建议,我将一些基于标记的代码修改为基于cfscript的代码.
但我没有看到任何性能提升.它实际上似乎有点慢.
以前 - 我认为 - CFMX7大多数CFScript结构比基于标签的等价物更快.有时候会有很大的不同.从那时起,它确实没有任何内容,实际上CFScript代码有时会比标签中最接近的等效代码慢.例如:
for (i=1; i <= myObj.methodReturningTotal(); i++){
// stuff here
}
Run Code Online (Sandbox Code Playgroud)
VS:
<cfloop index="i" from="1" to="#myObj.methodReturningTotal()#">
<!--- stuff here --->
</cfloop>
Run Code Online (Sandbox Code Playgroud)
这些表面看起来相同,但基于标记的myObj.methodReturningTotal()表达式将快速执行,因为表达式在for循环的每次迭代时都会被评估,但在循环开始之前只有一次<cfloop>.
类似地,使用列表和查询的循环<cfloop>比使用for/ listLen()/ listGetAt()列表和类似的shenanigans的查询组合要快一些.
真的......使用不同的代码构造不会是一个提高性能的好地方.最好看的地方是查看您的逻辑,看看是否可以改进,并且 - 更有可能看到收益 - 看看您的数据库交互如何执行.改进SQL,查看索引是否正确等等,可以获得更多收益,因为DB交互通常是最大的性能瓶颈.
对你有好处,顺便说一句,对于你的CF开发人员所说的内容持怀疑态度并提出质疑,而没有提供任何实际证据.这是处理这些事情和一般生活的好方法.
| 归档时间: |
|
| 查看次数: |
480 次 |
| 最近记录: |