Test name | Executions per second |
---|---|
Conspicuous Map lookup | 147.1 Ops/sec |
Conspicuous Obj lookup | 128.8 Ops/sec |
Conspicuous Map lookup 2 | 147.6 Ops/sec |
Conspicuous Obj lookup 2 | 129.7 Ops/sec |
Map.entries | 29962716.0 Ops/sec |
JSON.stringify | 293.3 Ops/sec |
parse Map entries | 7525545.5 Ops/sec |
parse JSON | 293.1 Ops/sec |
encode & decode Map | 1121.7 Ops/sec |
encode & decode JSON | 144.0 Ops/sec |
var keyCount = 16384
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 = Math.random()
keys.push(key)
map.set(key,val)
obj[key] = val
}
var mapEntries = map.entries();
var objJson = JSON.stringify(obj);
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]
}
map.entries();
JSON.stringify(obj);
var test = new Map(mapEntries);
var test = JSON.parse(objJson);
var mapEncoded = map.entries();
var decoded = new Map(mapEncoded);
var encoded = JSON.stringify(obj);
var decoded = JSON.parse(encoded);