Array.prototype vs [] perf

时间:2012-07-20 10:29:15

标签: javascript performance

我还没有机会深入研究这个问题。在调用/应用上下文中使用时哪个更有效:Array.prototype vs []

e.g:

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

1 个答案:

答案 0 :(得分:3)

这取决于运行它的浏览器。在chrome中,似乎.prototype更快,firefox显示两者之间没有差异,虽然通常比chrome更慢。 IE9显示.prototype的速度提升很快,但到目前为止是最慢的浏览器。

然而,这种优化是如此之小,以至于人们可以争辩所节省的时间与读取代码所需的额外字节相抵消。我离题了,如果这些是你遇到的最大的性能问题,那么你真的没有任何优化问题!

编辑:

我添加了一个额外的测试here,其中我使用传入函数的数组来调用splice函数,该函数在IE,Chrome和Firefox中都显示出比两者更快的速度。 我的结论是,如果你已经使用了数组,请使用它,否则使用原型。