Test name | Executions per second |
---|---|
Array.find, 100 elements | 10705738.0 Ops/sec |
Map.get, 100 elements | 58079804.0 Ops/sec |
Array.find, 1 000 000 elements | 29872.3 Ops/sec |
Map.get, 1 000 000 elements | 60034052.0 Ops/sec |
Array to Map + Map.get, 1 lookup | 299120.8 Ops/sec |
Array to Map + Map.get, 10 lookups | 294243.6 Ops/sec |
Array to Map + Map.get, 100 lookups | 234919.8 Ops/sec |
Array.find, 10 lookups | 683254.4 Ops/sec |
Array.find, 100 lookups | 67373.5 Ops/sec |
function getRandomElement(id) {
return {
id,
a: Math.random(),
b: Math.random(),
c: Math.random(),
}
}
function getArray(length) {
const result = [];
for (let i = 0; i < length; i++) {
result.push(getRandomElement(i))
}
return result;
}
function getArrays(length) {
const result = new Array(length).fill(0);;
for (let i = 0; i < length; i++) {
result[i] = (getRandomElement(i))
}
return result;
}
function arrayToMap(array) {
return new Map(array.map(el => [el.id, el]));
}
function getRandomInt(max) {
return Math.floor(Math.random() * max);
}
array_small = getArrays(100);
array_large = getArrays(10000);
map_small = arrayToMap(array_small);
map_large = arrayToMap(array_large);
const target = getRandomInt(99);
array_small.find(el => el.id === target);
const target = getRandomInt(99);
map_small.get(target);
const target = getRandomInt(999999);
array_large.find(el => el.id === target);
const target = getRandomInt(999999);
map_large.get(target)
const map = arrayToMap(array_small);
const target = getRandomInt(9999);
map.get(target);
const map = arrayToMap(array_small);
for (let i = 0; i < 10; i++) {
const target = getRandomInt(9999);
map.get(target);
}
const map = arrayToMap(array_small);
for (let i = 0; i < 100; i++) {
const target = getRandomInt(9999);
map.get(target);
}
for (let i = 0; i < 10; i++) {
const target = getRandomInt(9999);
array_small.find(el => el.id === target)
}
for (let i = 0; i < 100; i++) {
const target = getRandomInt(9999);
array_small.find(el => el.id === target)
}