perf for in loop vs pre enum keys for loop

JavaScript performance comparison

Test case created by uupaa

Preparation code

 
<script>
Benchmark.prototype.setup = function() {
    function createTestData(count) {
        var rv = {}, i = 0;
   
        for (; i < count; ++i) {
            rv[i] = i;
        }
        return rv;
    }
   
    window.testData = createTestData(200);
   
    Object.prototype.oreore1 = "oreore1";
    Object.prototype.oreore2 = "oreore2";
    Object.prototype.oreore3 = "oreore3";
    Object.prototype.oreore4 = "oreore4";
   
};
</script>

Test runner

Warning! For accurate results, please disable Firebug before running the tests. (Why?)

Java applet disabled.

Testing in unknown unknown
Test Ops/sec
for in loop
function enumKeys_basic(hash) {
    var rv = [], key;

    for (key in hash) {
        if (hash.hasOwnProperty(key)) {
            rv.push(key);
        }
    }
    return rv;
}
enumKeys_basic(testData)
pending…
uupaa looper
function enumKeys_uupaa_looper(hash) {
    var rv = [], ary = Object.keys(hash), i = 0, iz = ary.length;

    for (; i < iz; ++i) {
        rv.push(ary[i]); // key
    }
    return rv;
}
enumKeys_uupaa_looper(testData)
 
pending…

Compare results of other browsers

Revisions

You can edit these tests or add even more tests to this page by appending /edit to the URL. Here’s a list of current revisions for this page:

0 comments

Add a comment