Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Run results for:
Proxy overhead test vs classes
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/134.0.0.0 Safari/537.36
Browser:
Chrome 134
Operating system:
Windows
Device Platform:
Desktop
Date tested:
one year ago
Test name
Executions per second
Baseline Map object
42875.9 Ops/sec
Object
49416.3 Ops/sec
Subclass
30911.5 Ops/sec
Proxy
3225.5 Ops/sec
Script Preparation code:
var text = "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?" var simple_map = new Map(); var simple_obj = {}; class DefaultMap extends Map { constructor(defaultValue) { super(); this.defaultValue = defaultValue; } get(key) { if (!this.has(key)) { this.set(key, this.defaultValue); } return super.get(key); } } var dm = new DefaultMap(0) let base_obj = {}; var proxy_obj = new Proxy(base_obj, { get: function(target, prop, receiver) { return Reflect.get(target, prop, receiver) ?? 0; }, });
Tests:
Baseline Map object
for (const c of text) { simple_map.set(c, (simple_map.get(c) ?? 0) + 1) }
Object
for (const c of text) { simple_obj[c] = (simple_obj[c] ?? 0) + 1 }
Subclass
for (const c of text) { dm.set(c, dm.get(c)+1) }
Proxy
for (const c of text) { proxy_obj[c] += 1; }