Object.defineProperty vs __defineGetter__ vs normal (v56)

Revision 56 of this benchmark created by Yaniv Kessler on


Description

Test different access method to an object property

Preparation HTML

<script>
  obj = {
   _x: 0
  }
  
  function Proto() {
    this.x = 0
  }

  function ProtoDefineInner() {
        var _x = 0
    Object.defineProperty(this, 'x', {
                get: function () { return _x },
                set: function (val) { _x = val }
        }) 
  }

</script>

Test runner

Ready to run.

Testing in
TestOps/sec
Object.defineProperty
var p = new ProtoDefineInner()

for (var i = 0; i < 10000; i++) {
 p.x = i;
}

for (var i = 0; i < 10000; i++) {
  var y = p.x;
}
ready
Normal prototype
var p = new Proto()

for (var i = 0; i < 10000; i++) {
 p.x = i;
}

for (var i = 0; i < 10000; i++) {
  var y = p.x;
}
ready
normal object
for (var i = 0; i < 10000; i++) {
 obj._x = i;
}

for (var i = 0; i < 10000; i++) {
  var y = obj._x;
}
ready

Revisions

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