Object keys vs in

Benchmark created on


Preparation HTML

<script>
var testA = {subdata:{a:123,b:345,c:456,d:567,ac:123,bd:345,cd:456,dd:567,qac:123,bdw:345,ecd:456,dde:567}};
</script>
<div id="hey"></div>

Setup

var test = {a:123,b:345,c:456,d:567,ac:123,bd:345,cd:456,dd:567,qac:123,bdw:345,ecd:456,dde:567};
    
    var a=function() {
    var result = '';
    for (var i in testA.subdata) {
    result += '&'+i+'='+encodeURIComponent(testA.subdata[i]);
    }
    return result;
    }
    var b=function() {
    var result = '',c=testA.subdata;
    for (var i in c) {
    result += '&'+i+'='+encodeURIComponent(c[i]);
    }
    return result;
    }
    var c = function(c) {
    var result = '';
    for (var i in c) {
    result += '&'+i+'='+encodeURIComponent(c[i]);
    }
    return result;
    }

Test runner

Ready to run.

Testing in
TestOps/sec
for in with push
var result = ['&'];
for (var i in test) {
result.push('&',i,'=',encodeURIComponent(test[i]));
}
result = result.join('');
document.getElementById('hey').innerHTML=result;
ready
Object.keys with push
var result = ['&'], keys = Object.keys(test);
for (var i=0,len = keys.length; i<len;i++) {
result.push('&',keys[i],'=',encodeURIComponent(test[keys[i]]));
}
result = result.join('');
document.getElementById('hey').innerHTML=result;
ready
in with Strings
var result = '';
for (var i in test) {
result += '&'+i+'='+encodeURIComponent(test[i]);
}
document.getElementById('hey').innerHTML=result;
ready
for in with push 2
var result = ['&'];
for (var i in test) {
result.push(i,'=',encodeURIComponent(test[i]));
}
result = result.join('&');
document.getElementById('hey').innerHTML=result;
 
ready
document.getElementById('hey').innerHTML=a();
ready
document.getElementById('hey').innerHTML=b();
ready
document.getElementById('hey').innerHTML=c(testA.subdata);
ready

Revisions

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