Counting the properties in an Object (v4)

Revision 4 of this benchmark created by Chris Hoffman on


Description

Ways of counting the number of properties in an object

Preparation HTML

<script src="http://cdnjs.cloudflare.com/ajax/libs/lodash.js/1.2.1/lodash.min.js"></script>

<script src="http://underscorejs.org/underscore-min.js"></script>

<script>
    var _u = _.noConflict();
</script>

Setup

// Create a list of objects of various lengths generated with:
    //          for( var i = 1;  i < 10; i++ ) {
    //                  console.log( Math.floor( Math.random() * 1000 ) );
    //          }
    
    var lengths = [ 326, 140, 688, 20, 582, 416, 278, 803, 845 ];
    var objects = [];
    for( var iObject = 0;  iObject < lengths.length;  iObject++ ) {
        var obj = {};
        var len = lengths[iObject];
        for( var iProp = 0;  iProp < len;  iProp++ ) {
                var prop = [ 'z', iObject, iProp ].join('|');
                obj[prop] = 'z' + prop;
        }
        objects.push( obj );
    }
    
    function ObjectLengthCount( object ) {
        var length = 0;
        for( var key in object ) {
            if( object.hasOwnProperty(key) ) {
                if (++length > 1) { return true };
            }
        }
        return false;
    }
    
    function ObjectLengthModern( object ) {
        return Object.keys(object).length > 1;
    }
    
    var ObjectLengthEither =
        Object.keys ? ObjectLengthModern : ObjectLengthCount;

Teardown


    objects = [];
  

Test runner

Ready to run.

Testing in
TestOps/sec
Object.keys(object).length
for( var i = 0;  i < objects.length;  i++ ) {
    var len = ObjectLengthModern( objects[i] );
}
 
ready
Counting in a loop
for( var i = 0;  i < objects.length;  i++ ) {
    var len = ObjectLengthCount( objects[i] );
}
 
ready
Lo-Dash _.keys(object).length
for( var i = 0;  i < objects.length;  i++ ) {
    var len = _.keys( objects[i] ).length > 1;
}
 
ready
Underscore _.keys(object).length
for( var i = 0;  i < objects.length;  i++ ) {
    var len = _u.keys( objects[i] ).length > 1;
}
 
ready
Counting or Modern
for( var i = 0;  i < objects.length;  i++ ) {
    var len = ObjectLengthEither( objects[i] );
}
 
ready
Lo-Dash _.size(object)
for( var i = 0;  i < objects.length;  i++ ) {
    var len = _.size( objects[i] ) > 1;
}
 
ready
Underscore _.size(object)
for( var i = 0;  i < objects.length;  i++ ) {
    var len = _u.size( objects[i] ) > 1;
}
 
ready

Revisions

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

  • Revision 1: published by Michael Geary on
  • Revision 2: published by Shane Brinkman-Davis Delamore on
  • Revision 3: published by Shane Brinkman-Davis Delamore on
  • Revision 4: published by Chris Hoffman on