unshift vs concat vs push-apply

Benchmark created on


Setup

let result = [];
const singleItem = { itemNo : 1 }
const arrayList = [
{itemNo : 2},
{itemNo : 3},
{itemNo : 4},
{itemNo : 5},
{itemNo : 6},
{itemNo : 7},
{itemNo : 8},
{itemNo : 9},
{itemNo : 10},
{itemNo : 11},
{itemNo : 12},
{itemNo : 13},
{itemNo : 14},
{itemNo : 15},
{itemNo : 16},
{itemNo : 17},
{itemNo : 18},
{itemNo : 19},
{itemNo : 20},
{itemNo : 21},
{itemNo : 22},
{itemNo : 23},
{itemNo : 24},
{itemNo : 25},
{itemNo : 26},
{itemNo : 27},
{itemNo : 28},
{itemNo : 29},
{itemNo : 30},
{itemNo : 31},
{itemNo : 32},
{itemNo : 33},
{itemNo : 34},
{itemNo : 35},
{itemNo : 36},
{itemNo : 37},
{itemNo : 38},
{itemNo : 39},
{itemNo : 40},
{itemNo : 41},
{itemNo : 42},
{itemNo : 43},
{itemNo : 44},
{itemNo : 45},
{itemNo : 46},
{itemNo : 47},
{itemNo : 48},
{itemNo : 49},
{itemNo : 50},
{itemNo : 51},
{itemNo : 52},
{itemNo : 53},
{itemNo : 54},
{itemNo : 55},
{itemNo : 56},
{itemNo : 57},
{itemNo : 58},
{itemNo : 59},
{itemNo : 60},
{itemNo : 61},
{itemNo : 62},
{itemNo : 63},
{itemNo : 64},
{itemNo : 65},
{itemNo : 66},
{itemNo : 67},
{itemNo : 68},
{itemNo : 69},
{itemNo : 70},
{itemNo : 71},
{itemNo : 72},
{itemNo : 73},
{itemNo : 74},
{itemNo : 75},
{itemNo : 76},
{itemNo : 77},
{itemNo : 78},
{itemNo : 79},
{itemNo : 80},
{itemNo : 81},
{itemNo : 82},
{itemNo : 83},
{itemNo : 84},
{itemNo : 85},
{itemNo : 86},
{itemNo : 87},
{itemNo : 88},
{itemNo : 89},
{itemNo : 90},
{itemNo : 91},
{itemNo : 92},
{itemNo : 93},
{itemNo : 94},
{itemNo : 95},
{itemNo : 96},
{itemNo : 97},
{itemNo : 98},
{itemNo : 99},
{itemNo : 100},
{itemNo : 101},
{itemNo : 102},
{itemNo : 103},
{itemNo : 104},
{itemNo : 105},
{itemNo : 106},
{itemNo : 107},
{itemNo : 108},
{itemNo : 109},
{itemNo : 110},
{itemNo : 111},
{itemNo : 112},
{itemNo : 113},
{itemNo : 114},
{itemNo : 115},
{itemNo : 116},
{itemNo : 117},
{itemNo : 118},
{itemNo : 119},
{itemNo : 120},
{itemNo : 121},
{itemNo : 122},
{itemNo : 123},
{itemNo : 124},
{itemNo : 125},
{itemNo : 126},
{itemNo : 127},
{itemNo : 128},
{itemNo : 129},
{itemNo : 130},
{itemNo : 131},
{itemNo : 132},
{itemNo : 133},
{itemNo : 134},
{itemNo : 135},
{itemNo : 136},
{itemNo : 137},
{itemNo : 138},
{itemNo : 139},
{itemNo : 140},
{itemNo : 141},
{itemNo : 142},
{itemNo : 143},
{itemNo : 144},
{itemNo : 145},
{itemNo : 146},
{itemNo : 147},
{itemNo : 148},
{itemNo : 149},
{itemNo : 150},
{itemNo : 151},
{itemNo : 152},
{itemNo : 153},
{itemNo : 154},
{itemNo : 155},
{itemNo : 156},
{itemNo : 157},
{itemNo : 158},
{itemNo : 159},
{itemNo : 160},
{itemNo : 161},
{itemNo : 162},
{itemNo : 163},
{itemNo : 164},
{itemNo : 165},
{itemNo : 166},
{itemNo : 167},
{itemNo : 168},
{itemNo : 169},
{itemNo : 170},
{itemNo : 171},
{itemNo : 172},
{itemNo : 173},
{itemNo : 174},
{itemNo : 175},
{itemNo : 176},
{itemNo : 177},
{itemNo : 178},
{itemNo : 179},
{itemNo : 180},
{itemNo : 181},
{itemNo : 182},
{itemNo : 183},
{itemNo : 184},
{itemNo : 185},
{itemNo : 186},
{itemNo : 187},
{itemNo : 188},
{itemNo : 189},
{itemNo : 190},
{itemNo : 191},
{itemNo : 192},
{itemNo : 193},
{itemNo : 194},
{itemNo : 195},
{itemNo : 196},
{itemNo : 197},
{itemNo : 198},
{itemNo : 199},
{itemNo : 200}
]

Test runner

Ready to run.

Testing in
TestOps/sec
unshift
arrayList.unshift(singleItem)
ready
concat
result = [singleItem].concat(arrayList)
ready
push-apply
result = [singleItem];
Array.prototype.push.apply(result, arrayList)
ready
spread operator
result = [singleItem, ...arrayList]
ready

Revisions

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