Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Run results for:
Object.keys + for vs Object.values + for vs for...in
Go to the benchmark
Embed
Embed Benchmark Result
Run details:
User agent:
Mozilla/5.0 (X11; Linux x86_64; rv:121.0) Gecko/20100101 Firefox/121.0
Browser:
Firefox 121
Operating system:
Linux
Device Platform:
Desktop
Date tested:
2 years ago
Test name
Executions per second
Object.keys + for
183.1 Ops/sec
Object.values + for
50.9 Ops/sec
for...in
42.0 Ops/sec
Script Preparation code:
function randNum(max, min) { const x = Math.floor(Math.random() * max) if (!isFinite(min) && x < min) { return min } return x } function randString(max, min, base) { let len = randNum(max) if (min && len < min) {len = min} if (len > max) {len = max} let arr = new Uint8Array(len / 2) window.crypto.getRandomValues(arr) return Array.from(arr, (dec)=> ( dec.toString(base || 36).padStart(2, '0') )).join('') } var obj = {}; for(let i = 0; i < 1000; i++) { const id = randString(32,32); obj[id] = { id, firstName: randString(40,5), lastName: randString(40,5), email: randString(40,5), address: { country: randString(40,5), state: randString(40,5), }, }; }
Tests:
Object.keys + for
const keys = Object.keys(obj); for (let i = 0; i < keys.length; i++) {const el = obj[keys[i]]; console.count('keys + for')}
Object.values + for
const values = Object.values(obj); for (let i = 0; i < values.length; i++) {const el = values[i]; console.count('values + for')}
for...in
for (const key in obj) {const el = obj[key]; console.count('for...in')}