Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Run results for:
POJO hash table vs Map
Benchmark of various iteration and diffing strategies over a plain JavaScript-object-as-hash-table vs the ES6 Map data structure
Go to the benchmark
Embed
Embed Benchmark Result
Run details:
User agent:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:135.0) Gecko/20100101 Firefox/135.0
Browser:
Firefox 135
Operating system:
Mac OS X 10.15
Device Platform:
Desktop
Date tested:
one year ago
Test name
Executions per second
POJO - for...in
120421.1 Ops/sec
POJO - for...of Object.entries
124279.1 Ops/sec
POJO - reduce Object.entries
113973.6 Ops/sec
Map - forEach
264162.8 Ops/sec
Map - for...of entries
111858.9 Ops/sec
Script Preparation code:
var pojo1 = {}; var pojo2 = {}; var map1 = new Map(); var map2 = new Map(); for (var i = 0; i < 300; i++) { var val1 = Math.round(Math.random() * 10); var val2 = Math.round(Math.random() * 10); pojo1[`${i}`] = val1; map1.set(`${i}`, val1); pojo2[`${i}`] = val2; map2.set(`${i}`, val2); }
Tests:
POJO - for...in
var diff = []; for (var key in pojo1) { if (pojo1.hasOwnProperty(key)) { if (pojo1[key] !== pojo2[key]) { diff.push(key); } } }
POJO - for...of Object.entries
var diff = []; for (var [key, val] of Object.entries(pojo1)) { if (val !== pojo2[key]) { diff.push(key); } }
POJO - reduce Object.entries
var diff = Object.entries(pojo1).reduce((acc, [key, val]) => { if (val !== pojo2[key]) { acc.push(key); } return acc; }, []);
Map - forEach
var diff = []; map1.forEach((val, key) => { if (val !== map2.get(key)) { diff.push(key); } });
Map - for...of entries
var diff = []; for (var [key, val] of map1.entries()) { if (val !== map2.get(key)) { diff.push(key); } }