Run details:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36
Chrome 115
Mac OS X 10.15.7
Desktop
one year ago
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
Script Preparation code:
x
 
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);
Tests:
  • Conspicuous Map lookup

     
    for (let i=0; i<keyCount; i++) {
      let seed = Math.random()
      let key = getConspicuousKey(seed)
      a = map.get(key)
    }
  • Conspicuous Obj lookup

     
    for (let i=0; i<keyCount; i++) {
      let seed = Math.random()
      let key = getConspicuousKey(seed)
      a = obj[key]
    }
  • Conspicuous Map lookup 2

     
    for (let i=0; i<keyCount; i++) {
      let seed = Math.random()
      let key = getConspicuousKey(seed)
      a = map.get(key)
    }
  • Conspicuous Obj lookup 2

     
    for (let i=0; i<keyCount; i++) {
      let seed = Math.random()
      let key = getConspicuousKey(seed)
      a = obj[key]
    }
  • Map.entries

     
    map.entries();
  • JSON.stringify

     
    JSON.stringify(obj);
  • parse Map entries

     
    var test = new Map(mapEntries);
  • parse JSON

     
    var test = JSON.parse(objJson);
  • encode & decode Map

     
    var mapEncoded = map.entries();
    var decoded = new Map(mapEncoded);
  • encode & decode JSON

     
    var encoded = JSON.stringify(obj);
    var decoded = JSON.parse(encoded);