push|empty brackets [] | unshift | concat | array[array.length]=x

Benchmark created by asnow on


Description

Trying to comare all available Array assignment methods

Preparation HTML

<script>
  var arr = [];
  var func = function() {};
  var obj = {};
  var x = 10;
  var array_max_length = 10000; //10k
  /*
  Please do not use unshift for big arrays it's to long to move all values after first, I'm trying with 1kk and 10kk in Ghrome, but it's very time consumable
  */
  var for_iteration_count = array_max_length / 4;
  
  function start(a) {
   arr = [];
   for_function(a);
  }
  
  function for_function(a) {
   for (var i = for_iteration_count; i; i--) {
    a();
   }
  }
  
  function do10kkPush() {
   var n = [];
   for (var i = 10000000; i; i--) {
    n.push(10);
   };
  };
</script>

Test runner

Ready to run.

Testing in
TestOps/sec
push
start(

function() {
 arr.push(1);
 arr.push(func);
 arr.push(obj);
 arr.push(x);
});
ready
empty brackets
// Sorry but it's not work in JavaScript :)
/*start(

function() {
 arr[] = 1;
 arr[] = func;
 arr[] = obj;
 arr[] = x;
});
*/
do10kkPush();
ready
unshift
start(

function() {
 arr.unshift(1);
 arr.unshift(func);
 arr.unshift(obj);
 arr.unshift(x);
});
ready
concat
start(

function() {
 arr.unshift(1);
 arr.unshift(func);
 arr.unshift(obj);
 arr.unshift(x);
});
ready
array_length
start(

function() {
 arr[arr.length] = 1;
 arr[arr.length] = func;
 arr[arr.length] = obj;
 arr[arr.length] = x;
});
ready

Revisions

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