Test name | Executions per second |
---|---|
Read from data property | 25307326.0 Ops/sec |
Write to data property | 12833379.0 Ops/sec |
Read from accessor method | 12935372.0 Ops/sec |
Write to mutator method | 7605418.0 Ops/sec |
Read from object literal property | 11478757.0 Ops/sec |
Write to object literal property | 5533956.0 Ops/sec |
Read from object literal property on prototype | 12830392.0 Ops/sec |
Write to object literal property on prototype | 7541754.0 Ops/sec |
R p0 | 10694740.0 Ops/sec |
W p0 | 6779304.5 Ops/sec |
r p1 | 18288804.0 Ops/sec |
w p1 | 10532000.0 Ops/sec |
r p2 | 7813519.5 Ops/sec |
w p2 | 2884305.8 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;