For in vs loop with object.keys() (v5)

Revision 5 of this benchmark created by L8D on


Description

A comparison between using for-in loops and looping through keys given by Object.keys.

Preparation HTML

<script>
var object = (function() {
  var keys = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0].map(function() {
    return Math.random().toString().slice(2);
  });

  var values = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0].map(function() {
    return Math.random().toString().slice(2);
  });

  var obj = {};

  keys.forEach(function(key, index) {
    obj[key] = values[index];
  });

  return obj;
})();
</script>

Setup

var res = {};

Test runner

Ready to run.

Testing in
TestOps/sec
for-in
for (var key in object) {
  res[key] = object[key];
}
ready
Object.keys
var keys = Object.keys(object);
var index = -1;
var length = keys.length;

while (++index < length) {
  res[keys[index]] = object[keys[index]];
}
ready
Object.keys (reverse order)
var keys = Object.keys(object);
var index = keys.length;

while (index--) {
  res[keys[index]] = object[keys[index]];
}
ready

Revisions

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