for in vs Object.getOwnPropertyNames (v2)

Revision 2 of this benchmark created by Tangocoder on


Preparation HTML

<script>
var isE1 = function(obj) {
    for (var key in obj) return false; return true;
}
var isE2 = function(obj) {
    return Object.getOwnPropertyNames(obj).length === 0;
}
var isE3 = function(obj) {
    for (var key in obj) {
        if (obj.hasOwnProperty(key)) {
            return false;
        }
    }
    return true;
}

var o1 = {}, 
    o2 = {a: 1, b: 2, c: 3, d: 4, e: 5},
    o3 = {a: 1, b: 2, c: 3, d: 4, e: 5, tools:[
        {
            type:'refresh', tooltip: 'Refresh form Data', hidden:true,
            handler: function(event, toolEl, panel){ }
        },
        {
            type:'help', tooltip: 'Get Help',
            handler: function(event, toolEl, panel){ }
        }
    ], 
    type:'help',
    tooltip: 'Get Help',
    handler: function(event, toolEl, panel){ },
};
</script>

Test runner

Ready to run.

Testing in
TestOps/sec
for in empty
var a = isE1(o1);
ready
count property empty
var a = isE2(o1);
ready
for in small
var a = isE1(o2);
ready
count property small
var a = isE2(o2);
ready
for in std
var a = isE1(o3);
ready
count property std
var a = isE2(o3);
ready
has property empty
var a = isE3(o1);
ready
has property small
var a = isE3(o2);
ready
has property std
var a = isE3(o3);
ready

Revisions

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