当前位置 : 主页 > 网络安全 > 测试自动化 >

性能 – 为什么listFindNoCase()和listFind()比CF中的简单OR / IS“快得多”?

来源:互联网 收集:自由互联 发布时间:2021-06-22
我不明白,为什么使用listFindNoCase()和ListFind()进行一系列OR和IS / EQ比较的首选方式? JVM是否能够优化它并生成有效的代码,而不是进行必须处理字符串标记的函数调用?或者CF做的事情效率
我不明白,为什么使用listFindNoCase()和ListFind()进行一系列OR和IS / EQ比较的首选方式? JVM是否能够优化它并生成有效的代码,而不是进行必须处理字符串标记的函数调用?或者CF做的事情效率低得多?

Use listFindNoCase() or listFind() instead of the is and or operators
to compare one item to multiple items. They are much faster.

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

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

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

这是动态打字的代价.

网友评论