Run details:
Mozilla/5.0 (iPhone; CPU iPhone OS 16_1_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.1 Mobile/15E148 Safari/604.1
Mobile Safari 16
iOS 16.1.2
Mobile
one year ago
Test name Executions per second
Read from data property 15353416.0 Ops/sec
Write to data property 14325397.0 Ops/sec
Read from accessor method 6246605.5 Ops/sec
Write to mutator method 5261663.0 Ops/sec
Read from object literal property 4965370.5 Ops/sec
Write to object literal property 6094895.0 Ops/sec
Read from object literal property on prototype 6777758.0 Ops/sec
Write to object literal property on prototype 3829462.5 Ops/sec
Script Preparation code:
x
 
var data = {
  property: property
};
var property = undefined;
var method = {
  getProperty: function() {
    return property;
  },
  setProperty: function(value) {
    property = value;
  }
};
var objectLiteralAccessor = {
  get property() {
    return property;
  },
  set property(value) {
    property = value;
  }
};
function Class() {
}
Class.prototype = {
  get property() {
    return property;
  },
  set property(value) {
    property = value;
  }
};
    
var prototypeAccessor = new Class();
Tests:
  • Read from data property

     
    var value = data.property;
  • Write to data property

     
    data.property = true;
  • Read from accessor method

     
    var value = method.getProperty();
  • Write to mutator method

     
    method.setProperty(true);
  • Read from object literal property

     
    var value = objectLiteralAccessor.property;
  • Write to object literal property

     
    objectLiteralAccessor.property = true;
  • Read from object literal property on prototype

     
    var value = prototypeAccessor.property;
  • Write to object literal property on prototype

     
    prototypeAccessor.property = true;