Javascript perf来清理数组

Vad*_*est 12 javascript arrays performance

我刚看了一眼:

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

我不明白第一个怎么样:

arr.length = 0;
Run Code Online (Sandbox Code Playgroud)

可以慢于:

while (arr.length > 0) {
  arr.shift();
}
Run Code Online (Sandbox Code Playgroud)

有人可以联系/解释原因吗?

wiz*_*lus 14

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

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

我修改了测试以每次返回一个新数组.结果如预期.splice并且length速度最快,因为它们可以在没有循环的情况下立即修改数组的长度.

详细结果 条状图

  • 啊,我知道这里出了点问题.或者我错过了关于javascript数组的重要内容,谢谢!一个循环如何比一个简单的赋值更快,除了魔法在背景中触发隐藏的东西我不明白这怎么可能有可能. (3认同)