Map iteration (object vs map) when you need the values -- small integer keys, packed (v2)

Revision 2 of this benchmark created on


Setup

const obj = {};
for (let i=0; i<1e3; i++) {
	obj[i.toString()] = Math.random();
}
const map = new Map(Object.entries(obj));
let sum = 0;

Test runner

Ready to run.

Testing in
TestOps/sec
for...in
for (const key in obj) {
	sum += obj[key];
}
ready
for...of Object.keys
for (const key of Object.keys(obj)) {
	sum += obj[key];
}
ready
for...of Object.values
for (const value of Object.values(obj)) {
	sum += value;
}
ready
Object.values.forEach
Object.values(obj).forEach(value => {sum += value;})
ready
for...of Object.entries
for (const [k, value] of Object.entries(obj)) {
	sum += value;
}
ready
for...of map (entries)
for (const [key, value] of map) {
	sum += value;
}
ready
for...of map.values()
for (const value of map.values()) {
	sum += value;
}
ready
for...of map.keys()
for (const key of map.keys()) {
	sum += map.get(key);
}
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.