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 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/119.0
Browser:
Firefox 119
Operating system:
Ubuntu
Device Platform:
Desktop
Date tested:
2 years ago
Test name
Executions per second
POJO - for...in
62847.1 Ops/sec
POJO - for...of Object.entries
54665.5 Ops/sec
POJO - reduce Object.entries
54067.7 Ops/sec
Map - forEach
131062.4 Ops/sec
Map - for...of entries
51262.0 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); } }