7

问题标题几乎说明了一切:更长的键是否会导致查找速度变慢?是:

someObj["abcdefghijklmnopqrstuv"]

慢于:

someObj["a"]

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

我试图做一些研究;网上似乎没有太多关于这个的信息。任何帮助/见解将不胜感激。

4

2 回答 2

6

一般来说没有。在大多数语言中,字符串文字是“实习的”,它对它们进行散列并使其查找速度更快。一般来说,不同的 javascript 引擎之间可能存在一些差异,但总的来说,如果它们实施得很好(咳嗽IE咳嗽),它应该是相当平等的。尤其是由于 javascript 引擎在不断开发,这(可能)是一件容易优化的事情,并且随着时间的推移情况会有所改善。

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

至于字符的类型,无论字符集如何,字符串都被视为一堆字节,因此这可能也无关紧要。引擎可能会优化可以以点表示法使用的键,但我没有任何证据证明这一点。

于 2012-12-18T19:40:27.337 回答
5

如果我们谈论使用 V8 javascript 引擎的 Chrome,性能是相同的。根据 V8 设计规范,您可以从“快速属性访问”和“动态机器代码生成”中看到,最终这些键最终被编译为任何其他 c++ 类变量

于 2012-12-18T19:52:25.917 回答