cons vs. concat (v5)

Revision 5 of this benchmark created on


Description

Saw this code and wondered if it was really faster than a "native" concat.

Setup

function cons(x, array) {
        var l = array.length;
        var a = new Array(l + 1);
        a[0] = x;
        for(var i=0; i<l; ++i) {
                a[i + 1] = array[i];
        }
        return a;
    }
    
    function cons_concat (x, array) {
        var a = new Array(array.length + 1);
        a[0] = x;
        a.concat(array);
        return a;
    }
    
    function cons_concat2 (x, array) {
      return [x].concat(array);
    }
    
    function cons_push (x, array) {
        var a = new Array(array.length + 1);
        a[0] = x; 
        a.length = 1;
        a.push.apply(a, array);
        return a;
    }
    
    function cons_push2 (x, array) {
      var a = [x];
      a.push.apply(a, array);
      return a;
    }
    
    var short = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ];
    var long = [];
    for (var i = 0; i < 100; i++) long = long.concat(short);

Test runner

Ready to run.

Testing in
TestOps/sec
cons, short array
var a = cons(99, short);
ready
concat, short array
var a = cons_concat(99, short);
ready
cons, long array
var a = cons(99, long);
ready
concat, long array
var a = cons_concat(99, long);
ready
unshift short array
var a = short.slice(); a.unshift(99);
ready
unshift long array
var a = long.slice(); a.unshift(99);
ready
push.apply short array
var a = cons_push(99, short);
ready
push.apply long
var a = cons_push(99, long);
ready
cons_push2 short
var a = cons_push2(99, short);
ready
cons_push2 long
var a = cons_push2(99, long);
ready
cons_concat2 short
var a = cons_concat2(99, short);
ready
cons_concat2 long
var a = cons_concat2(99, long);
ready

Revisions

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