只是一个快速的问题。我创建了基准测试(下面的链接),至少对我来说(运行 chrome 18.0.1025),每次使用 array.shift() 从数组前面读取值似乎比使用 while/for 读取值快得多循环并通过索引访问它们。
我确信这不可能是正确的,因为 shift() 还有很多工作要做,但同时我看不出我可能做错了什么来解释这种相当极端的差异?
http://jsperf.com/some-array-reading-comparisons
感谢阅读,詹姆斯
只是一个快速的问题。我创建了基准测试(下面的链接),至少对我来说(运行 chrome 18.0.1025),每次使用 array.shift() 从数组前面读取值似乎比使用 while/for 读取值快得多循环并通过索引访问它们。
我确信这不可能是正确的,因为 shift() 还有很多工作要做,但同时我看不出我可能做错了什么来解释这种相当极端的差异?
http://jsperf.com/some-array-reading-comparisons
感谢阅读,詹姆斯
您每次测试只设置一次数组,因此只有测试的第一次迭代shift
有任何数据可供使用。下一次迭代从第一次迭代中留下一个空数组,并立即终止。
这是固定的测试套件,其中变异算法在数据副本上工作。shift
可以预见,该算法在性能上排在最后。