Tests:
  • Array.prototype.concat

    x
     
    const arr1 = [];
    const arr2 = [];
    const arr3 = [];
    const arrs = []
    for (let i = 0; i < 2000; i++) {
      arr1.push(i);
    }
    for (let i = 0; i < 3000; i++) {
      arr2.push(i);
    }
    for (let i = 0; i < 1000; i++) {
      arr3.push(i);
    }
    arrs.push(arr1, arr2, arr3);
    arrs.reduce((memo, val) => {
      return memo.concat(val);
    }, []);
  • spread operator

     
    const arr1 = [];
    const arr2 = [];
    const arr3 = [];
    const arrs = []
    for (let i = 0; i < 2000; i++) {
      arr1.push(i);
    }
    for (let i = 0; i < 3000; i++) {
      arr2.push(i);
    }
    for (let i = 0; i < 1000; i++) {
      arr3.push(i);
    }
    arrs.push(arr1, arr2, arr3);
    arrs.reduce((memo, val) => {
      return [...memo, ...val];
    }, []);
  • Push

     
    const arr1 = [];
    const arr2 = [];
    const arr3 = [];
    const arrs = []
    for (let i = 0; i < 2000; i++) {
      arr1.push(i);
    }
    for (let i = 0; i < 3000; i++) {
      arr2.push(i);
    }
    for (let i = 0; i < 1000; i++) {
      arr3.push(i);
    }
    arrs.push(arr1, arr2, arr3);
    arrs.reduce((memo, val) => {
      memo.push(...val);
      
      return memo;
    }, []);
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    Array.prototype.concat
    spread operator
    Push

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 4 years ago)
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36
Chrome 89 on Windows
View result in a separate tab
Test name Executions per second
Array.prototype.concat 18784.6 Ops/sec
spread operator 12473.0 Ops/sec
Push 17653.5 Ops/sec