阵列原型与[]性能

Array.prototype vs [] perf

本文关键字:性能 原型 阵列      更新时间:2023-12-01

我还没有机会深入研究的快速问题。在调用/应用类型的上下文中使用时,哪个更具性能:Array.prototype[]

例如:

function test1() {
    return Array.prototype.splice.apply(arguments, [1, 2]);
}
test1([1,2,3,4,5,6,7,8,9]);
function test2() {
    return [].splice.apply(arguments, [1, 2]);
}
test1([1,2,3,4,5,6,7,8,9]);

我的想法是:我认为Array.prototype方式更具性能,因为原型函数可以重用,而不需要创建文字。但也不太确定。

使用JSPerf(带chrome),看起来Array.prototype的性能确实略高:

http://jsperf.com/array-perf-prototype-vs-literal

这取决于运行它的浏览器。在chrome中。原型更快,firefox显示两者之间没有区别,尽管通常比chrome慢。IE9显示.protype的速度有了很大的提高,但它是迄今为止速度最慢的浏览器。

然而,这种优化非常小,人们可能会认为节省的时间与读取代码所需的额外字节相抵消。不过我离题了,如果这些是你遇到的最大性能问题,那么你在优化方面真的没有任何问题!

编辑:

我在这里添加了一个额外的测试,我使用传递到函数中的数组来调用splice函数,它在IE、Chrome和Firefox中都显示得更快。我的结论是,如果你手头已经有了数组,就使用它,否则就使用原型。