Property Getter / Setter Techniques

JavaScript performance comparison

Revision 74 of this test case created by

Preparation code

<script>
  var global = this;
  
  (function() {
    global.obj = {
      _prop: 0
    };
  
    global.obj1 = {
      _prop: 0,
      getProp: function() {
        return this._prop;
      },
      setProp: function(value) {
        this._prop = value;
      }
    };
  
    global.obj2 = {
      _prop: 0,
      get prop() {
        return this._prop;
      },
      set prop(value) {
        this._prop = value;
      }
    };
  
  
    global.obj3 = {
      _prop: 0
    }
  
  
    Object.defineProperty(global.obj3, "prop", {
      get: function() {
        return this._prop;
  
      },
      set: function(val) {
        this._prop = val;
      }
    });
  
    global.obj4 = {
      _prop: 0
    }
  
  
    global.obj4.__defineGetter__("prop", function() {
      return this._prop;
    });
  
    global.obj4.__defineSetter__("prop", function(val) {
      this._prop = val;
    });
    document.body._prop = 0;
document.body.setAttribute('_attr', 0);
this._prop=0;
  })();
</script>
      
<script>
Benchmark.prototype.setup = function() {
  global.obj = {
  prop: 0
  };

};
</script>

Test runner

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

Java applet disabled.

Testing in CCBot 2.0.0 / Other 0.0.0
Test Ops/sec
Methods
global.obj1.setProp(global.obj1.getProp() + 1);
pending…
get / set
global.obj2.prop = global.obj2.prop + 1;
pending…
Object.defineProperty
global.obj3.prop = global.obj3.prop + 1;
pending…
__defineGetter__
global.obj4.prop = global.obj4.prop + 1;
pending…
Property
global.obj.prop = global.obj.prop + 1;
pending…
Element Prop
document.body._prop = document.body._prop + 1;
pending…
Element Attributes
document.body.attributes['_attr'] = document.body.attributes['_attr'] + 1;
pending…
setAttribute
document.body.setAttribute('_attr', document.body.getAttribute('_attr') + 1);
pending…
this.prop
this._prop = this._prop + 1;
pending…
window.prop
window.obj._prop = window.obj._prop + 1;
pending…
FAULT
window.OBJ = WINDOW.OBEN.S;
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.

0 Comments