Array unshift vs prepend (v13)

Revision 13 of this benchmark created on


Setup

function prependArray(value, oldArray) {
      var len = oldArray.length + 1, newArray = new Array(len);
      newArray[0] = value;
      for (var i = 1; i < len; ++i) {
        newArray[i] = oldArray[i - 1];
      }
      return newArray;
    }
    
    function prependArray2(value, oldArray) {
      return [value].concat(oldArray);
    }
    
    function prependArray3(value, oldArray) {
      var len = oldArray.length;
      ++oldArray.length;
      for (var i = len; i > 0; --i) {
        oldArray[i] = oldArray[i - 1];
      }
      oldArray[0] = value;
    }
    var a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

Test runner

Ready to run.

Testing in
TestOps/sec
Unshift
a.unshift(0);
ready
Prepend function
a = prependArray(0, a);
ready
Unshift without mutation
a = a.slice(0);
a.unshift(0);
ready
splice
a.splice(0,0,0);
ready
Prepend2 function
a = prependArray2(0, a);
ready
Prepend3 (mutate array)
prependArray3(0, a);
ready

Revisions

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