Jam*_*s T 22 coldfusion optimization performance premature-optimization cfml
哪些在ColdFusion中更有效?
isDefined('url.myvar')
Run Code Online (Sandbox Code Playgroud)
要么
structKeyExists(url, 'myvar')
Run Code Online (Sandbox Code Playgroud)
Ada*_*tle 39
这些天(CF8 +)的速度差异不是那么大.但是,structKeyExists确实要快一点.这就是原因.
使用时isDefined,您传入的字符串将作为多个范围中的键名进行搜索.从CF9开始,检查顺序的范围列表是:( 来源)
即使您使用范围名称isDefined(如if isDefined('variables.foo'):),仍将按顺序检查列表; 如果local.variables.foo定义了变量,它将在BEFORE之前 找到variables.foo.
另一方面,structKeyExists只搜索你传递它的结构是否存在密钥名称; 所以要看的地方要少得多.
通过使用更明确的代码(structKeyExists),我不仅获得了一些性能,而且在我看来,您的代码更具可读性和可维护性.
Pet*_*ton 10
使用更易于阅读的内容,最好地展示您正在做的事情.
两者之间的差异非常小,很可能根本不值得担心.
不要浪费时间优化代码,除非你有一个经过验证和可重复的测试用例来证明它的缓慢性.