concat vs push.apply (v30)

Revision 30 of this benchmark created on


Setup

var  A = [];
    
    for (var i = 0; i < 42; ++i) {
      A[i] = {};
    }
    var b = [1,2,3,4,5,6,7,8,9,10];
    var read;

Teardown


    b = [{},{},{},{},{},{},{},{},{},{}];
  

Test runner

Ready to run.

Testing in
TestOps/sec
concat
function test() {
 A = A.concat(arguments);
}

for (i = 0; i < 1000; ++i) {
  test(1,2,3,4,5,6,7,8,9,10);
}
ready
push.apply
function test() {
 A.push.apply(A, arguments);
}

for (i = 0; i < 1000; ++i) {
  test(1,2,3,4,5,6,7,8,9,10);
}
ready
Array.prototype.push.apply
function test() {
 Array.prototype.push.apply(A, arguments);
}

for (i = 0; i < 1000; ++i) {
  test(1,2,3,4,5,6,7,8,9,10);
}
ready
Array.prototype.push cached
var cachedPush = Array.prototype.push;

function test() {
 cachedPush.apply(A, arguments);
}

for (i = 0; i < 1000; ++i) {
  test(1,2,3,4,5,6,7,8,9,10);
}
ready
shift push
var c = b.slice();
while(read = c.shift()){
 A.push(read);
 
}
ready
shift calc index
var i = 0;
while(read = b.shift()){
 A[A.length+i++] = read;
}
ready
read into
var i = 0;
while (read = b[i++]) {
A.push(read)
}
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.