Script Preparation code:
x
 
var obj = {}
var cnt = 1000
for (let i = 0; i < cnt; i++) {
  obj[i] = i + ''
}
var proxyReflect = new Proxy(obj, {
  get(obj, prop, reciever) {
    return Reflect.get(obj, prop, reciever)
  }
})
var proxy = new Proxy(obj, {
  get(obj, prop, reciever) {
    return obj[prop]
  }
})
var protoObj = Object.create(obj, {})
Tests:
  • Proxy

     
    for (let i = 0; i < cnt; i++) {
      proxy[i]
    }
  • Prototype

     
    for (let i = 0; i < cnt; i++) {
      protoObj[i]
    }
  • Direct

     
    for (let i = 0; i < cnt; i++) {
      obj[i]
    }
  • Proxy reflect

     
    for (let i = 0; i < cnt; i++) {
      proxyReflect[i]
    }
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    Proxy
    Prototype
    Direct
    Proxy reflect

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 8 months ago)
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36
Chrome 128 on Mac OS X 10.15.7
View result in a separate tab
Test name Executions per second
Proxy 7355.5 Ops/sec
Prototype 11314.9 Ops/sec
Direct 15590.8 Ops/sec
Proxy reflect 4629.5 Ops/sec