mc_copyingArrayNumbers1K (v2)

Revision 2 of this benchmark created on


Description

We test different algorithms for copying an array of 1K numbers. Most tests make a "shallow copy" of the array. A "deep copy" of the array can be obtained using:

  • JSON.parse(JSON.stringify());
  • structuredClone().

Setup

const size = 1_000;
const arrayNumbers1K = Array(size).fill(0);
for (let i = 0; i < size; ++i)
	arrayNumbers1K[i] = Math.random() * 1000;

Test runner

Ready to run.

Testing in
TestOps/sec
JSON.parse(JSON.stringify())
const arrayCopy = JSON.parse(JSON.stringify(arrayNumbers1K));
ready
structuredClone()
const arrayCopy = structuredClone(arrayNumbers1K);
ready
.push.apply()
const arrayCopy = [];
arrayCopy.push.apply(arrayCopy, arrayNumbers1K);
ready
... Spread operator
const arrayCopy = [...arrayNumbers1K];
ready
Array.of()
const arrayCopy = Array.of(...arrayNumbers1K);
ready
Array.from()
const arrayCopy = Array.from(arrayNumbers1K);
ready
Object.assign()
const arrayCopy = Object.assign([], arrayNumbers1K);
ready
.concat()
const arrayCopy = [].concat(arrayNumbers1K);
ready
.filter()
const arrayCopy = arrayNumbers1K.filter(() => true);
ready
.flat()
const arrayCopy = arrayNumbers1K.flat();
ready
.map()
const arrayCopy = arrayNumbers1K.map((item) => item);
ready
.slice()
const arrayCopy = arrayNumbers1K.slice();
ready
.forEach() + .push()
const arrayCopy = [];
arrayNumbers1K.forEach((item) => arrayCopy.push(item));
ready
.forEach() + new Array(length)
const arrayCopy = new Array(arrayNumbers1K.length).fill();
arrayNumbers1K.forEach((item, index) => arrayCopy[index] = item);
ready
for + .push()
const arrayCopy = [];
for (let i = 0; i < arrayNumbers1K.length; i++) {
  arrayCopy.push(arrayNumbers1K[i]);
}
ready
for + new Array(length)
const arrayCopy = new Array(arrayNumbers1K.length).fill();
for (let i = 0; i < arrayNumbers1K.length; i++) {
  arrayCopy[i] = arrayNumbers1K[i];
}
ready
while + .push()
const arrayCopy = [];
let i = 0;
while (i < arrayNumbers1K.length) {
  arrayCopy.push(arrayNumbers1K[i]);
  i++;
}
ready
while + new Array(length)
const arrayCopy = new Array(arrayNumbers1K.length).fill();
let i = 0;
while (i < arrayNumbers1K.length) {
  arrayCopy[i] = arrayNumbers1K[i];
  i++;
}
ready

Revisions

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