Array concat vs push loop performance (v3)

Revision 3 of this benchmark created by Qix on


Setup

var ary1 = [];
    var ary2 = [];
    var ary3 = [];
    var ary4 = [];
    var ary5 = [];
    
    var resultAry = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
    
    prepop(ary1, 1);
    prepop(ary2, 2);
    prepop(ary3, 5);
    prepop(ary4, 8);
    prepop(ary5, 10);
    
    function prepop(ary, arySize) {
      for (var x = 0; x < arySize; x++) {
    
        ary.push(1);
    
      }
    }

Test runner

Ready to run.

Testing in
TestOps/sec
array 1 concat
resultAry = [].concat(ary1);
ready
array 1 push loop
for (var x = 0; x < ary1.length; x++) {
  resultAry.push(ary1[x]);
}
ready
array 2 concat
resultAry = [].concat(ary2);
ready
array 2 push loop
for (var x = 0; x < ary2.length; x++) {
  resultAry.push(ary2[x]);
}
ready
array 3 concat
resultAry = [].concat(ary3);
ready
array 3 push loop
for (var x = 0; x < ary3.length; x++) {
  resultAry.push(ary3[x]);
}
ready
array 4 concat
resultAry = [].concat(ary4);
ready
array 4 push loop
for (var x = 0; x < ary4.length; x++) {
  resultAry.push(ary4[x]);
}
ready
array 5 concat
resultAry = [].concat(ary5);
ready
array 5 push loop
for (var x = 0; x < ary5.length; x++) {
  resultAry.push(ary5[x]);
}
ready
array 1 direct loop
for (var i = 0; i < ary5.length; i++) {
  resultAry[i] = ary5[i];
}
ready

Revisions

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

  • Revision 1: published by Jeremy Diviney on
  • Revision 2: published by tamlyn on
  • Revision 3: published by Qix on