freeze vs seal vs normal (v11)

Revision 11 of this benchmark created on


Preparation HTML

<script>

var o = {
    i: 42,
    s: 3,
    n: 5,
    r: 7,
    a: [1, 2, 3],
    f: function(i) {
        return i;
    }
};
var f = {
    i: 42,
    s: 3,
    n: 5,
    r: 7,
    a: [1, 2, 3],
    f: function(i) {
        return i;
    }
};
var s = {
    i: 42,
    s: 3,
    n: 5,
    r: 7,
    a: [1, 2, 3],
    f: function(i) {
        return i;
    }
};
Object.seal(s);
Object.freeze(f);

function deepFreeze(o) {
    Object.freeze(o); // First freeze the object.
    for (var propKey in o) {
        var prop = o[propKey];
        if (o.hasOwnProperty(propKey) && prop instanceof Object && !Object.isFrozen(prop)) {
            deepFreeze(prop); // Recursively call deepFreeze.
        }
    }
}

var df = {
    i: 42,
    s: 3,
    n: 5,
    r: 7,
    a: [1, 2, 3],
    f: function(i) {
        return i;
    }
};

deepFreeze(df);

</script>

Test runner

Ready to run.

Testing in
TestOps/sec
seal
var p = s.i + s.s + s.n + s.r;
s.f(p);
ready
normal
var r = o.i + o.s + o.n + o.r;
o.f(r);
ready
freeze
var q = f.i + f.s + f.n + f.r;
f.f(q);
ready
deeply frozen
var q = f.i + f.s + f.n + f.r;
f.f(q);
ready

Revisions

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