Test name | Executions per second |
---|---|
Conspicuous Map lookup | 44.2 Ops/sec |
Conspicuous WeakMap lookup | 46.0 Ops/sec |
Conspicuous Map lookup 2 | 44.6 Ops/sec |
Conspicuous WeakMap lookup 2 | 46.4 Ops/sec |
var keyCount = 16384
var keys = []
var map = new Map()
var weakmap = new WeakMap()
// 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 = {}
keys.push(key)
map.set(key,val)
weakmap.set(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 = weakmap.get(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 = weakmap.get(key)
}