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 = {
  getProperty() {
    return property;
  },
  setProperty(value) {
    property = value;
  },
  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;
  • Write to object

     
    var value = prototypeAccessor.getProperty();
  • Read to object

     
    prototypeAccessor.setProperty(true);
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    Read from data property
    Write to data property
    Read from accessor method
    Write to mutator method
    Read from object literal property
    Write to object literal property
    Read from object literal property on prototype
    Write to object literal property on prototype
    Write to object
    Read to object

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 4 years ago)
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36
Chrome 84 on Windows
View result in a separate tab
Test name Executions per second
Read from data property 11944928.0 Ops/sec
Write to data property 11895602.0 Ops/sec
Read from accessor method 5966777.0 Ops/sec
Write to mutator method 4444305.5 Ops/sec
Read from object literal property 5369902.0 Ops/sec
Write to object literal property 2665076.2 Ops/sec
Read from object literal property on prototype 5375312.0 Ops/sec
Write to object literal property on prototype 4341736.0 Ops/sec
Write to object 5721419.5 Ops/sec
Read to object 4266714.5 Ops/sec