concat vs push.apply (v34)

Revision 34 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
shift push
function test() {
  var c = Array.prototype.push.apply(null, arguments);
  while (read = c.shift()) {
    A.push(read);
  }
}

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

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

}
for (i = 0; i < 1000; ++i) {
  test(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
}
ready
shift calc index no add
function test() {
  var i = A.length;
  while (A[i++] = arguments.shift()) {
    // pass
  }
}

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

Revisions

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