Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Run results for:
property access: object with define property vs Proxy get vs plain object
Go to the benchmark
Embed
Embed Benchmark Result
Run details:
User agent:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.6778.265 Safari/537.36
Browser:
Chrome 131
Operating system:
Windows
Device Platform:
Desktop
Date tested:
one year ago
Test name
Executions per second
Proxy
23864990.0 Ops/sec
defineProperty
108037416.0 Ops/sec
getter
51630096.0 Ops/sec
Control (plain object access)
115631288.0 Ops/sec
Script Preparation code:
const queryResults = { a: {}, b: [2, 3, 4], c: 3, d: { a: 1, b: [], }, }; window.queryResults = queryResults; window.trackedResultsProxy = new Proxy(queryResults, { get(target, prop, receiver) { return Reflect.get(target, prop, receiver); } }); window.trackedResultsDefineProperty = {}; for (const key of Object.keys(queryResults)) { Object.defineProperty(trackedResultsDefineProperty, key, { configurable: false, enumerable: true, get() { return queryResults[key]; }, }); } window.trackedResultsGetter = { get d() { return queryResults.d; } }
Tests:
Proxy
window.trackedResultsProxy.d.a + 5
defineProperty
window.trackedResultsDefineProperty.d.a + 5
getter
window.trackedResultsGetter.d.a + 5
Control (plain object access)
window.queryResults.d.a + 5