array vs object (v9)

Revision 9 of this benchmark created by 1st1 on


Setup

var arr = [],
      i,
      obj = Object.create(null), map = new Map(),
      key;
      for(i = 0; i < 100; i = i + 1) {
        var item = {index: i};
        arr.push(item);
        obj[i] = item;
        map.set(i, item);
      }
    
      var f = function(){};
      f.prototype = obj;
      new f;
    
      var $keys = function(o) {
         var r = [], i;
         for (i in o) {
            if (Object.prototype.hasOwnProperty.call(o, i)) {
               r.push(i);
            }
         }
         return r;
      }

Test runner

Ready to run.

Testing in
TestOps/sec
array
var s = 0;
for (var x=0; x<arr.length; x++) {
   s += arr[x].index;
}

window.__result__ = s;
ready
object
var s = 0;
for (var x=0; x<100; x++) {
    s += obj[x].index;
}
window.__result__ = s;
ready
object unknown length
var s = 0;
var keys = Object.keys(obj);
for (var x = 0; x < keys.length; x++){
  s += obj[keys[x]].index;
}
window.__result__ = s;
ready
object for in loop
var s = 0;
for (var key in obj) {
  s += obj[key].index;
}
window.__result__ = s;
ready
custom keys
var s = 0;
var keys = $keys(obj);
for (var x = 0; x < keys.length; x++){
  s += obj[keys[x]].index;
}
window.__result__ = s;
ready
maps
var s = 0;
map.forEach(function(v) {
   s += v.index;
});
window.__result__ = s;
ready

Revisions

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