Run details:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36 Edg/133.0.0.0
Chrome 133
Windows
Desktop
one month ago
Test name Executions per second
Object access 118749904.0 Ops/sec
Proxy access 81251488.0 Ops/sec
Proxy with get handler access 46517804.0 Ops/sec
Use of simple getter 88077136.0 Ops/sec
Use of defineProperty 74611968.0 Ops/sec
Proxy with get reflect handler access 45113824.0 Ops/sec
object get data 72975000.0 Ops/sec
Script Preparation code:
AخA
 
object = { value: 'data', getData() {return this.value;}, get data() { return this.value } };
Object.defineProperty(object, 'dataProperty', {
  get() { return this.value; }
});
proxy = new Proxy(object, {})
proxyWithReflectHandler = new Proxy(object, {
    get(target, prop, receiver) {
        return Reflect.get(target, prop, receiver)
    }
})
proxyWithHandler = new Proxy(object, {
    get(target, prop, receiver) {
        return object[prop];
    }
})
Tests:
  • Object access

     
    object.value;
  • Proxy access

     
    proxy.value
  • Proxy with get handler access

     
    proxyWithHandler.value
  • Use of simple getter

     
    object.getData();
  • Use of defineProperty

     
    object.dataProperty;
  • Proxy with get reflect handler access

     
    proxyWithReflectHandler.value
  • object get data

     
    object.data;