Test name | Executions per second |
---|---|
Array.find | 42.2 Ops/sec |
indexed copy | 351.6 Ops/sec |
index map | 261.1 Ops/sec |
function randstr(N) {
return (Math.random().toString(36)+'00000000000000000').slice(2, N+2);
}
var dataset = [];
for (var x = 0; x < 100000; x++) {
dataset.push({id: 'xx' + x, name: randstr(10), other: randstr(10)});
}
var indexedDataset = {};
for (var item of dataset) {
indexedDataset[item.id] = item;
}
var indexMap = {};
for (var [i, item] of dataset.entries()) {
indexMap[item.id] = i;
}
function assertEq(a, b) {
if (a !== b) {
new Error(`Failed assert: "${a}" expected "${b}"`);
}
}
for (var x = 0; x < 10000; ++x) {
const item = dataset.find(v => v.id == 'xx' + 123);
assertEq(item.id, 'xx' + 123);
}
for (var x = 0; x < 10000; ++x) {
const item = indexedDataset['xx' + 123];
assertEq(item.id, 'xx' + 123);
}
for (var x = 0; x < 10000; ++x) {
const item = dataset[indexMap['xx' + 123]];
assertEq(item.id, 'xx' + 123);
}