ColdFusion:更有效的structkeyexists()而不是ISDEFIENDIND()
-
08-10-2019 - |
题
其中哪一个在ColdFusion中更有效?
isDefined('url.myvar')
或者
structKeyExists(url, 'myvar')
解决方案
这些天(CF8+)速度的差异不是 那 伟大的。然而, structKeyExists
的确更快了。这就是原因。
当您使用时 isDefined
, ,您传递的字符串被搜索为多个范围中的关键名称。截至CF9,示波器列表按检查的顺序为:((资源)
- 本地(仅功能本地,UDF和CFCS)
- 参数
- 线程本地(仅内部线程)
- 查询(不是真正的范围,适用于查询循环中的变量)
- 线
- 变量
- CGI
- cffile
- URL
- 形式
- 曲奇饼
- 客户
即使您使用示波器名称 isDefined
(喜欢: if isDefined('variables.foo')
)该列表仍将按顺序进行检查;如果变量 local.variables.foo
定义,会发现 前 variables.foo
.
另一方面, structKeyExists
仅搜索您将其传递给关键名称的结构;因此,它必须看的地方要少得多。
通过使用更多的显式代码(structKeyExists
),我认为,您不仅获得了一些性能,而且您的代码更可读和可维护。
其他提示
使用一个 易于阅读 最好显示您在做什么。
两者之间的区别是 令人难以置信的 小,很可能根本不必担心。
除非有一个,否则不要浪费时间优化代码 经过证明 和 可重复 测试用例 证明了缓慢的。
不隶属于 StackOverflow