Test name | Executions per second |
---|---|
Read from data property | 25623090.0 Ops/sec |
Write to data property | 12979518.0 Ops/sec |
Read from accessor method | 13005217.0 Ops/sec |
Write to mutator method | 7638945.5 Ops/sec |
Read from object literal property | 11672098.0 Ops/sec |
Write to object literal property | 5514502.5 Ops/sec |
Read from object literal property on prototype | 12991141.0 Ops/sec |
Write to object literal property on prototype | 7644783.5 Ops/sec |
R p0 | 11033038.0 Ops/sec |
W p0 | 6834513.0 Ops/sec |
r p1 | 18537146.0 Ops/sec |
w p1 | 10607704.0 Ops/sec |
r p2 | 7918282.0 Ops/sec |
w p2 | 2751355.2 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;