7

只是一个快速的问题。我创建了基准测试(下面的链接),至少对我来说(运行 chrome 18.0.1025),每次使用 array.shift() 从数组前面读取值似乎比使用 while/for 读取值快得多循环并通过索引访问它们。

我确信这不可能是正确的,因为 shift() 还有很多工作要做,但同时我看不出我可能做错了什么来解释这种相当极端的差异?

http://jsperf.com/some-array-reading-comparisons

感谢阅读,詹姆斯

4

1 回答 1

7

您每次测试只设置一次数组,因此只有测试的第一次迭代shift有任何数据可供使用。下一次迭代从第一次迭代中留下一个空数组,并立即终止。

这是固定的测试套件,其中变异算法在数据副本上工作。shift可以预见,该算法在性能上排在最后。

于 2012-09-14T12:19:07.090 回答