只是一个快速的问题。我创建了基准测试(下面有链接),至少对我来说(运行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
算法在性能上最后执行。
array.length
查找。现在,在 Chrome(v 39)中,shift 对我来说是最好的,见“shifting, no length lookup”: http://jsperf.com/some-array-reading-comparisons/14 - Lasse