defineProperty

Benchmark created on


Setup

var LObj0 = {
        a : 0
    };
    
    var LObj1 = {
        _a : 0,
        get a() {
                return this._a;
        },
        set a(v) {
                this._a = v;
        }
    };
    
    var LObj2 = {
    };
    
    Object.defineProperty(LObj2, "a", {
        value        : 0,
        writable     : true,
        enumerable   : true,
        configurable : true
    }); 
    
    var LObj3 = {
        _a : 0
    };
    
    Object.defineProperty(LObj3, "a", {
        get          : function ()  { return this._a; },
        set          : function (v) { this._a = v;    },
        enumerable   : true,
        configurable : true
    }); 
    
    function FObj0() {
        this.a = 0;
    };
    FObj0.prototype = {
    };
    var TObj0 = new FObj0();
    
    function FObj1() {
        this._a = 0;
    };
    FObj1.prototype = {
        get a() {
                return this._a;
        },
        set a(v) {
                this._a = v;
        }
    };
    var TObj1 = new FObj1();
    
    function FObj2() {
    };
    FObj2.prototype = {
    };
    Object.defineProperty(FObj2.prototype, "a", {
        value        : 0,
        writable     : true,
        enumerable   : true,
        configurable : true
    }); 
    var TObj2 = new FObj2();
    
    function FObj3() {
        this._a = 0;
    };
    FObj3.prototype = {
    };
    Object.defineProperty(FObj3.prototype, "a", {
        get          : function ()  { return this._a; },
        set          : function (v) { this._a = v;    },
        enumerable   : true,
        configurable : true
    }); 
    var TObj3 = new FObj3();

Test runner

Ready to run.

Testing in
TestOps/sec
Literal Plain
LObj0.a = LObj0.a + 1;
 
ready
Literal GetSet
LObj1.a = LObj1.a + 1;
 
ready
Literal DefineProp Plain
LObj2.a = LObj2.a + 1;
 
ready
Literal DefineProp GetSet
LObj3.a = LObj3.a + 1;
 
ready
Typed Plain
TObj0.a = TObj0.a + 1;
 
ready
Typed GetSet
TObj1.a = TObj1.a + 1;
 
ready
Typed DefineProp Plain
TObj2.a = TObj2.a + 1;
 
ready
Typed DefineProp GetSet
TObj3.a = TObj3.a + 1;
 
ready

Revisions

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