删除第一个元素后,数组遍历幅度更快

Dou*_*oug 5 javascript arrays optimization traversal

在阅读了最近关于优化的粉碎杂志文章后,我运行了一些测试,看看从我的一个数组中间"删除"元素的最有效方法是什么.

在运行我自己的测试关于从数组的中间拼接一个值并删除它/将其设置为null之后,我遇到了一个相当意外的结果,即从数组中拼接出值使得数组的运行速度提高了一个数量级.

更多的调查让我想到了这个.

出于某种原因,.shift()'从数组中获取第一条记录使得遍历速度快300倍(在v8中看到的最大性能,但它似乎对我尝试过的所有浏览器都有效).

我怀疑我会滥用这个,因为我不认为实际的遍历是瓶颈,但有谁知道为什么会出现这种情况?

编辑:错误使用jsPerf是这里的根本问题,请参阅下面的答案.

Dou*_*oug 0

好吧,事实证明这实际上是我对 jsPerf 工作原理的误解。

脚本的设置部分是在每组循环开始时运行的,而不是在每次尝试脚本时运行它。

正如此处所示,数字实际上如您所期望的那样。