Global Variables vs Local Variables (v11)

Revision 11 of this benchmark created on


Description

This test compares the performance of global variables to local variables within functions.

Global variables should be slower because they do not exist in a function's activation object. JavaScript must traverse the Scope Chain to locate global variables.

Preparation HTML

<script>
var test = {
    a: {
        b: {
            c: {
                d:{
                    e: function(param){return param+1;},
                    asfas: 214,
                    asf: "asffasf",
                    kgakgag: 3214,
                    asdkqrqwr: 132415,
                    dsagkksdg:12441,
                    gksdgksd: 141412,
                    asfas: 12424,
                    aqtrtz: 14124,
                    pooi: "sagdgdsdgsdg"
                },
                asfas: 214,
                asf: "asffasf",
                kgakgag: 3214,
                asdkqrqwr: 132415,
                dsagkksdg:12441,
                gksdgksd: 141412,
                asfas: 12424,
                aqtrtz: 14124,
                pooi: "sagdgdsdgsdg"
                },
            asfas: 214,
            asf: "asffasf",
            kgakgag: 3214,
            asdkqrqwr: 132415,
            dsagkksdg:12441,
            gksdgksd: 141412,
            asfas: 12424,
            aqtrtz: 14124,
            pooi: "sagdgdsdgsdg"
            },
        asfas: 214,
        asf: "asffasf",
        kgakgag: 3214,
        asdkqrqwr: 132415,
        dsagkksdg:12441,
        gksdgksd: 141412,
        asfas: 12424,
        aqtrtz: 14124,
        pooi: "sagdgdsdgsdg"
        }, 
    asfas: 214,
    asf: "asffasf",
    kgakgag: 3214,
    asdkqrqwr: 132415,
    dsagkksdg:12441,
    gksdgksd: 141412,
    asfas: 12424,
    aqtrtz: 14124,
    pooi: "sagdgdsdgsdg"
};
function x() {
    for ( i = 0; i < 10; i++)
        test.a.b.c.d.e(i);
}

function w() {
    var local = test.a.b.c.d.e;
    for ( i = 0; i < 10; i++)
        local(i);
}

function y() {
    for ( i = 0; i < 10; i++)
        window.test.a.b.c.d.e(i);
}

function z() {
    var local = test;
    for ( i = 0; i < 10; i++)
        local.a.b.c.d.e(i);
}
</script>

Test runner

Ready to run.

Testing in
TestOps/sec
Global variables
x();
ready
window
y();
ready
cached object
z();
ready
cached function
w();
ready

Revisions

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