JavaScript:更长的键会使对象查找更慢吗?

时间:2012-12-18 19:38:53

标签: javascript performance object

问题标题几乎说明了一切:更长的密钥会使查找速度变慢吗? 是:

someObj["abcdefghijklmnopqrstuv"]

慢于:

someObj["a"]

另一个子问题是字符串中字符的类型是否重要。字母数字键是否更快?

我试着做一些研究;网上似乎没有太多关于此的信息。任何帮助/见解都将非常感激。

2 个答案:

答案 0 :(得分:3)

一般没有。在大多数语言中,字符串文字是“ interned ”,它会对它们进行哈希处理并使查找速度更快。一般来说,不同的javascript引擎之间可能存在一些差异,但总体而言如果它们实现得很好(咳嗽 IE cough ),它应该是相当平等的。特别是因为javascript引擎不断正在开发中,这(可能)是一个很容易优化的东西,并且情况会随着时间的推移而改善。

但是,某些引擎也会限制实习的字符串长度。 YMMV在不同的浏览器上。我们还可以从jsperf测试中看到一些见解(在问题的评论中链接)。 Firefox显然会进行更积极的实习。

对于字符的类型,无论字符集如何,字符串都被视为一堆字节,所以这可能也无关紧要。引擎可能优化keys that can be used in dot notation,但我没有任何证据。

答案 1 :(得分:3)

如果我们谈论使用V8 javascript引擎的Chrome,性能是一样的。根据V8设计规范,您可以从“fast property access”和“Dynamic machine code generation”看到,最终这些键最终被编译为任何其他c ++类变量