Script Preparation code:
AخA
 
var obj = {
  'a': 1,
  'b': 1,
  'c': 1,
  'd': 1,
  'e': 1,
  'f': 1,
  'g': 1
};
Tests:
  • for-in

     
    for (let i=10000; i > 0; i--) {
      for (let key in obj) { 
        let x = key in obj;
      }
    }
  • for-of Object.keys

     
    for (let i=10000; i > 0; i--) {
      let keys = Object.keys(obj);
      for (let key of keys) {
        let x = key in obj;
      }
    }
  • for-of Object.keys includes

     
    for (let i=10000; i > 0; i--) {
      let keys = Object.keys(obj);
      for (let key of keys) {
        let x = keys.includes(key);
      }
    }
  • for-of Object.keys hasOwnProperty

     
    for (let i=10000; i > 0; i--) {
      let keys = Object.keys(obj);
      for (let key of keys) {
        let x = Object.hasOwnProperty(obj, key);
      }
    }
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    for-in
    for-of Object.keys
    for-of Object.keys includes
    for-of Object.keys hasOwnProperty

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 3 years ago)
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36
Chrome 92 on Windows
View result in a separate tab
Test name Executions per second
for-in 143.1 Ops/sec
for-of Object.keys 114.3 Ops/sec
for-of Object.keys includes 412.4 Ops/sec
for-of Object.keys hasOwnProperty 32.4 Ops/sec