Javascript perf来清理数组

时间:2014-02-26 16:33:18

标签: javascript arrays performance

我刚看了一眼:

http://jsperf.com/array-destroy/32

我不明白第一个怎么样:

arr.length = 0;

可以慢于:

while (arr.length > 0) {
  arr.shift();
}

有人可以链接/解释原因吗?

2 个答案:

答案 0 :(得分:14)

在测试设置中,会创建一个大型数组。一旦测试开始,阵列就会被清空,测试会自行重复。但是,每次首次运行测试后,阵列已经为空。要准确执行此测试,您必须每次都创建一个新数组。 试试这个:

http://jsperf.com/array-destroy/67

我修改了测试以每次返回一个新数组。结果如预期。 splicelength是最快的,因为它们会在没有循环的情况下立即修改数组的长度。

Detailed Results Bar Graph

答案 1 :(得分:2)

使用pop()时,数据中的最后一个元素将被删除。 使用shift()时,将删除第一个数组,并重新索引所有其余元素。阵列越大,所需的时间就越长。