其中哪一个在ColdFusion中更有效?

isDefined('url.myvar')

或者

structKeyExists(url, 'myvar')
有帮助吗?

解决方案

这些天(CF8+)速度的差异不是 伟大的。然而, structKeyExists 的确更快了。这就是原因。

当您使用时 isDefined, ,您传递的字符串被搜索为多个范围中的关键名称。截至CF9,示波器列表按检查的顺序为:((资源)

  1. 本地(仅功能本地,UDF和CFCS)
  2. 参数
  3. 线程本地(仅内部线程)
  4. 查询(不是真正的范围,适用于查询循环中的变量)
  5. 线
  6. 变量
  7. CGI
  8. cffile
  9. URL
  10. 形式
  11. 曲奇饼
  12. 客户

即使您使用示波器名称 isDefined (喜欢: if isDefined('variables.foo'))该列表仍将按顺序进行检查;如果变量 local.variables.foo 定义,会发现 variables.foo.

另一方面, structKeyExists 仅搜索您将其传递给关键名称的结构;因此,它必须看的地方要少得多。

通过使用更多的显式代码(structKeyExists),我认为,您不仅获得了一些性能,而且您的代码更可读和可维护。

其他提示

使用一个 易于阅读 最好显示您在做什么。

两者之间的区别是 令人难以置信的 小,很可能根本不必担心。

除非有一个,否则不要浪费时间优化代码 经过证明可重复 测试用例 证明了缓慢的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top