Values extraction (v5)

Revision 5 of this benchmark created by Dean Trower on


Description

Version of this test with a large object (100,000 key/value pairs)

Setup

var has = Object.prototype.hasOwnProperty;
    var k, z = 100000, obj = {};
    
    function randString()
    {
      var i, r, s = "";
      for (i = 10; i--;)
      {
        r = Math.floor(Math.random() * 36);
        s += String.fromCharCode((r < 10) ? r + 48 : r + 55);
      }
    }
    
    while (z) if (!obj[k = randString()]) { obj[k] = k; z--; }

Test runner

Ready to run.

Testing in
TestOps/sec
Array map with keys
var vals = Object.keys(obj).map(function(k){return obj[k]});
ready
Raw loop
var vals = [];
for (var o in obj) if (obj.hasOwnProperty(o)) vals.push(obj[o]);
ready
Raw loop with cached .hasOwnProperty()
var vals = [];
for (var o in obj) if (has.call(obj, o)) vals.push(obj[o]);
ready
Using Object.keys
var vals = Object.keys(obj), length = vals.length;
for (var i = 0; i < length; i++) vals[i] = obj[vals[i]];
ready

Revisions

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