哪些在ColdFusion中效率更高?
isDefined('url.myvar')
或
structKeyExists(url, 'myvar')
答案 0 :(得分:38)
这些天(CF8 +),速度差异 。但是,structKeyExists
确实要快一点。这就是原因。
使用isDefined
时,会在多个范围内搜索您传入的字符串作为键名。从CF9开始,检查顺序中的范围列表为:(source)
即使您将范围名称与isDefined
一起使用(例如:if isDefined('variables.foo')
),仍会按顺序检查列表;如果定义了变量local.variables.foo
,则会找到 BEFORE variables.foo
。
另一方面,structKeyExists
仅搜索您传递给它的结构是否存在密钥名称;所以要看的地方要少得多。
通过使用更明确的代码(structKeyExists
),我不仅获得了一些性能,而且在我看来,您的代码更具可读性和可维护性。
答案 1 :(得分:10)
使用更易于阅读的,并最好地展示您正在做的事情。
两者之间的区别是难以置信小,很可能根本不值得担心。
不要浪费时间优化代码,除非您有 经过验证的和可重复的测试用例,这表明速度很慢。