Performance 为什么ListFindLocase()和listFind()是;“快得多”;而不是CF中的简单OR/IS?

Performance 为什么ListFindLocase()和listFind()是;“快得多”;而不是CF中的简单OR/IS?,performance,coldfusion,Performance,Coldfusion,我不明白,为什么使用listFindNoCase()和ListFind()是进行一系列OR和is/EQ比较的首选方法?JVM难道不能优化它并生成高效的代码,而不是进行必须处理字符串标记化的函数调用吗?还是CF做的事情效率更低 使用listFindNoCase()或listFind()代替is和or运算符 将一个项目与多个项目进行比较。他们快得多 我也觉得这很奇怪。我能想到的唯一一件事是,列表元素被添加到一个快速集合中,该集合根据元素所包含元素的一些很棒的散列来检查元素是否存在。事实上,对于大的或

我不明白,为什么使用
listFindNoCase()
ListFind()
是进行一系列OR和is/EQ比较的首选方法?JVM难道不能优化它并生成高效的代码,而不是进行必须处理字符串标记化的函数调用吗?还是CF做的事情效率更低

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


我也觉得这很奇怪。我能想到的唯一一件事是,列表元素被添加到一个快速集合中,该集合根据元素所包含元素的一些很棒的散列来检查元素是否存在。事实上,对于大的或非常大的列表,这会更快。较小的列表应该显示很少或没有速度提升。

答案很简单:类型转换。您可以比较两个等式“2”或现在()的等式“2011-01-01”,或真正的等式“是”。转换(多种类型)和比较的成本相当高

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

这是动态打字的价格。

我明白了。。因此,如果x=“YES”和y=“TRUE”,x是y-->TRUE,但listFind(x,y)-->False。好!!