Toggle navigation
MeasureThat
.net
Create a benchmark
Tools
Feedback
Feature Requests
FAQ
Register
Log In
Run results for:
Object.keys ForEach vs for-in hasOwnProperty
Original source: https://jsperf.com/object-keys-foreach-vs-for-in-hasownproperty
Go to the benchmark
Embed
Embed Benchmark Result
Run details:
User agent:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36
Browser:
Chrome 119
Operating system:
Mac OS X 10.15.7
Device Platform:
Desktop
Date tested:
2 years ago
Benchmark engine:
Benchmark.js
D
4.5M/s
C
4.5M/s
B
3.2M/s
A
2.4M/s
View exact numbers
Test name
Executions per second
✓
D
4,542,309 Ops/sec
C
4,528,368 Ops/sec
B
3,221,296 Ops/sec
A
2,406,405 Ops/sec
Script Preparation code:
// Declaring our Animal object var Animal = function () { this.name = 'unknown'; this.getName = function () { return this.name; } return this; }; // Declaring our Dog object var Dog = function () { // A private variable here var private = 42; // overriding the name this.name = "Bello"; // Implementing ".bark()" this.bark = function () { return 'MEOW'; } return this; }; // Dog extends animal Dog.prototype = new Animal(); // Creating an instance of Dog. var obj = new Dog(); function iterateA() { var ret = ""; for (var prop in obj) { if( obj.hasOwnProperty( prop ) ) { ret += obj[prop]; } } return ret; } function iterateB() { var ret = ""; Object.keys(obj).forEach(function (prop) { ret += obj[prop]; }); return ret; } function iterateC() { var ret = ""; for (var i = 0, keys = Object.keys(obj); i < keys.length; i++) { ret += obj[i]; } return ret; } function iterateD() { var ret = ""; for (var keys = Object.keys(obj), len = keys.length, i = 0; i < len; i++) { ret += obj[i]; } return ret; }
Tests:
A
var tmp = iterateA();
B
var tmp = iterateB();
C
var tmp = iterateC();
D
var tmp = iterateD();