Test name | Executions per second |
---|---|
Read from data property | 25551044.0 Ops/sec |
Write to data property | 12813608.0 Ops/sec |
Read from accessor method | 12791210.0 Ops/sec |
Write to mutator method | 7580195.5 Ops/sec |
Read from object literal property | 11415879.0 Ops/sec |
Write to object literal property | 5507650.0 Ops/sec |
Read from object literal property on prototype | 12877096.0 Ops/sec |
Write to object literal property on prototype | 7573325.5 Ops/sec |
R p0 | 10788188.0 Ops/sec |
W p0 | 6737351.0 Ops/sec |
r p1 | 18332918.0 Ops/sec |
w p1 | 10410502.0 Ops/sec |
r p2 | 7762643.5 Ops/sec |
w p2 | 2903119.0 Ops/sec |
var property = 0;
var data = {
property: property
};
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();
var p0 = new Proxy({}, {
get(target, prop, receiver) {
return property;
},
set(target, prop, value) {
property = value;
return true;
},
});
var p1 = new Proxy({ property: 0 }, {
get(target, prop, receiver) {
return target[prop]
},
set(target, prop, value) {
target[prop] = value;
return true;
},
});
var p2 = new Proxy({ property: 0 }, {
get(target, prop, receiver) {
return Reflect.get(target, prop, receiver);
},
set(target, prop, value, receiver) {
return Reflect.set(target, prop, value, receiver);
},
});
var value = data.property;
data.property = property+1;
var value = method.getProperty();
method.setProperty(property+1);
var value = objectLiteralAccessor.property;
objectLiteralAccessor.property = property+1;
var value = prototypeAccessor.property;
prototypeAccessor.property = property+1;
var value = p0.property;
p0.property = property+1;
var value = p1.property;
p1.property = property+1;
var value = p2.property;
p2.property = property+1;