Test name | Executions per second |
---|---|
Conspicuous Map lookup | 21.4 Ops/sec |
Conspicuous Obj lookup | 13.6 Ops/sec |
Conspicuous Map lookup 2 | 22.6 Ops/sec |
Conspicuous Obj lookup 2 | 13.8 Ops/sec |
Single map | 1377314.5 Ops/sec |
Single obj | 883642.5 Ops/sec |
var keyCount = 65535
var keys = []
var map = new Map()
var obj = {}
// Hide lookup keys to prevent V8 cheating (AKA Optimizing)
var getConspicuousKey = seed => keys[Math.floor(seed * keyCount)]
// Setup out test objects w/ random values
for (let i=0; i<keyCount; i++) {
let val = Math.random()
let key = 3000000000000000000+((4000000000000000000*Math.random())|0)
keys.push(key)
map.set(key,val)
obj[key] = val
}
for (let i=0; i<keyCount; i++) {
let seed = Math.random()
let key = getConspicuousKey(seed)
a = map.get(key)
}
for (let i=0; i<keyCount; i++) {
let seed = Math.random()
let key = getConspicuousKey(seed)
a = obj[key]
}
for (let i=0; i<keyCount; i++) {
let seed = Math.random()
let key = getConspicuousKey(seed)
a = map.get(key)
}
for (let i=0; i<keyCount; i++) {
let seed = Math.random()
let key = getConspicuousKey(seed)
a = obj[key]
}
let seed = Math.random()
let key = getConspicuousKey(seed)
a = map.get(key)
let seed = Math.random()
let key = getConspicuousKey(seed)
a = obj[key]