Underscore _.each vs for in when iterating over objects (v23)

Revision 23 of this benchmark created on


Preparation HTML

<script src="https://raw.github.com/documentcloud/underscore/master/underscore-min.js" type="text/javascript"></script>

Setup

var obj = {};
    
    for (var i=0; i<100000; ++i) {
      obj[i] = true;
    }

Test runner

Ready to run.

Testing in
TestOps/sec
_.each
var c = 0;
_.each(obj, function(val, key) {
  c = val;
});
ready
for in
var c = 0;
for (i in obj) {
  c = obj[i];
};
ready
_.each(_.keys());
var c = 0;
var keys = _.keys(obj);
_.each(keys, function(key) {
  c = obj[key];
});
ready
for loop
var c = 0;
var keys = _.keys(obj);
for (var i=0, len=keys.length; i<len; ++i) {
  c = obj[keys[i]];
};
ready
for loop, all cached
var c = 0;
for (var i=0, keys=_.keys(obj), len=keys.length; i<len; ++i) {
  c = obj[keys[i]];
};
ready

Revisions

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