Test name | Executions per second |
---|---|
Array.find, 100 elements | 16615013.0 Ops/sec |
Map.get, 100 elements | 116870696.0 Ops/sec |
Array.find, 1 000 000 elements | 406.3 Ops/sec |
Map.get, 1 000 000 elements | 112878960.0 Ops/sec |
Array to Map + Map.get, 1 lookup | 496947.2 Ops/sec |
Array to Map + Map.get, 10 lookups | 486544.6 Ops/sec |
Array to Map + Map.get, 100 lookups | 400269.9 Ops/sec |
Array.find, 10 lookups | 1097007.6 Ops/sec |
Array.find, 100 lookups | 112100.0 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 arrayToMap(array) {
return new Map(array.map(el => [el.id, el]));
}
function getRandomInt(max) {
return Math.floor(Math.random() * max);
}
array_small = getArray(100);
array_large = getArray(1000000);
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)
}