concat vs push.apply

JavaScript performance comparison

Revision 21 of this test case created by 54yuri

Preparation code

 
<script>
Benchmark.prototype.setup = function() {
    var  A = [];
   
    for (var i = 0; i < 42; ++i) {
      A[i] = {};
    }
};
</script>

Test runner

Warning! For accurate results, please disable Firebug before running the tests. (Why?)

Java applet disabled.

Testing in unknown unknown
Test Ops/sec
concat
var B = A.slice(0); // clone of A
function test() {
 B = B.concat(arguments);
}

for (i = 0; i < 100; ++i) {
  test(1);
}
pending…
push.apply
var B = A.slice(0); // clone of A
function test() {
 B.push.apply(B, arguments);
}

for (i = 0; i < 100; ++i) {
  test(1);
}
pending…
Array.prototype.push.apply
var B = A.slice(0); // clone of B
function test() {
 Array.prototype.push.apply(B, arguments);
}

for (i = 0; i < 10; ++i) {
  test(1,2,3,4,5,6,7,8,9,10);
}
pending…
Array.prototype.push cached
var cachedPush = Array.prototype.push;
var B = A.slice(0); // clone of A
function test() {
 cachedPush.apply(B, arguments);
}

for (i = 0; i < 10; ++i) {
  test(1,2,3,4,5,6,7,8,9,10);
}
pending…
concat
var B = A.slice(0); // clone of A
function test() {
 B = B.concat(arguments);
}

for (i = 0; i < 10; ++i) {
  test(1,2,3,4,5,6,7,8,9,10);
}
pending…

Compare results of other browsers

Revisions

You can edit these tests or add even more tests to this page by appending /edit to the URL. Here’s a list of current revisions for this page:

0 comments

Add a comment