今天,当我试图提高我的应用程序的性能时,根据一些 ColdFusion 开发人员的建议,我将一些基于标签的代码修改为基于 cfscript 的代码。
但我没有看到任何性能提升。它实际上似乎有点慢。
今天,当我试图提高我的应用程序的性能时,根据一些 ColdFusion 开发人员的建议,我将一些基于标签的代码修改为基于 cfscript 的代码。
但我没有看到任何性能提升。它实际上似乎有点慢。
在我认为 CFMX7 之前,大多数 CFScript 构造都比基于标签的等价物更快。有时存在显着差异。不过从那以后,它真的什么都没有了,而且确实 CFScript 代码有时会比标签中最接近的等效代码慢。例如:
for (i=1; i <= myObj.methodReturningTotal(); i++){
// stuff here
}
与:
<cfloop index="i" from="1" to="#myObj.methodReturningTotal()#">
<!--- stuff here --->
</cfloop>
这些看起来表面上是一样的,但是基于标签的会很快执行 mre,因为myObj.methodReturningTotal()
表达式在循环的每次迭代中都会被计算一次for
,但在循环开始之前只计算一次<cfloop>
。
类似地循环使用列表和查询<cfloop>
比使用for
/ listLen()
/listGetAt()
列表和类似的查询的组合稍微快一些。
真的……使用不同的代码结构并不是提高性能的好地方。最好的地方是查看您的逻辑,看看是否可以改进,并且 - 更有可能看到收益 - 看看您的数据库交互如何执行。改进您的 SQL,查看您的索引是否正确等,将获得更多收益,因为 DB 交互通常是最大的性能瓶颈。
顺便说一句,你很高兴,因为你在没有提供任何实际证据的情况下怀疑并质疑你的 CF 开发人员所说的话。这是处理这些事情和一般生活的好方法。