为什么listFindNoCase()和listFind()比CF中的简单OR/IS"快得多"?

Hen*_*nry 4 coldfusion performance

我不明白,为什么使用listFindNoCase()ListFind()进行一系列OR和IS/EQ比较的首选方式?JVM是否能够优化它并生成有效的代码,而不是进行必须处理字符串标记的函数调用?或者CF做的事情效率低得多?

使用listFindNoCase()listFind()代替is和or运算符将一个项目与多个项目进行比较.它们要快得多.

http://www.adobe.com/devnet/coldfusion/articles/coldfusion_performance.html

Pau*_*gny 11

答案很简单:类型转换.你可以比较2 EQ"2"或now()EQ"2011-01-01",或真正的EQ"YES".转换(到多种类型)和比较的成本非常高.

ListFind()不需要尝试多次转换,因此速度更快.

这是动态打字的代价.