7

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

例如:

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 (with chrome) 看起来Array.prototype确实稍微更高性能:

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

4

1 回答 1

3

这取决于运行它的浏览器。在 chrome 中,.prototype 似乎更快,firefox 显示两者之间没有区别,尽管通常比 chrome 执行得慢。IE9 显示 .prototype 的速度大幅提升,但它是迄今为止最慢的浏览器。

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

编辑:

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

于 2012-07-20T10:39:02.257 回答