【发布时间】:2014-03-29 15:23:06
【问题描述】:
我只是看了一眼:
http://jsperf.com/array-destroy/32
第一个没看懂:
arr.length = 0;
可以慢于:
while (arr.length > 0) {
arr.shift();
}
有人可以链接/解释原因吗?
【问题讨论】:
-
谢谢!但是链接没有解释为什么它更快,或者我错过了什么?
-
设置
length时会发生很多事情:es5.github.io/#x15.4.5.1,与.shift相比:es5.github.io/#x15.4.4.9。仍在尝试找出每个算法的哪一部分在执行.length = 0时被触发。 -
嗯。还是不知道。看起来
.shift也触发了分配给.length会触发的相同代码。 -
它必须是垃圾收集机制,并且可能是解释器中使用的其他一些迭代条件检查。哪种方法执行得最好取决于 Javascript 引擎。在 Firefox 中,pop 方法比 shift 方法快 1.8%+。
标签: javascript arrays performance