Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Run results for:
weakmap vs closure vs private symbols vs private symbol 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/121.0.0.0 Safari/537.36
Browser:
Chrome 121
Operating system:
Windows
Device Platform:
Desktop
Date tested:
2 years ago
Test name
Executions per second
closure get
24103636.0 Ops/sec
weakmap get
11672696.0 Ops/sec
closure incr
23721064.0 Ops/sec
weakmap incr
7659549.0 Ops/sec
symbol incr
23504584.0 Ops/sec
pso incr
11982350.0 Ops/sec
pso get
12031869.0 Ops/sec
Script Preparation code:
function A() { var x = 0; return { incr() { x ++ }, get() { return x }, } } var closure = A(); closure.incr() var wm = new WeakMap(); function B() { var x = { incr() { wm.set(x, (wm.get(x) || 0) + 1) }, get() { return wm.get(x) }, } return x } var weakmap = B(); weakmap.incr() function C() { var me = Symbol('me'); var x = { incr() { x[me]++ }, get() { return x[me] }, [me]: 0, } return x } var symbols = C(); symbols.incr() var so = {}; function D() { var sym = Symbol('x') so[sym] = 0 var x = { incr() { so[sym]++ }, get() { return so[sym] }, } return x } var pso = D(); pso.incr()
Tests:
closure get
closure.get()
weakmap get
weakmap.get()
closure incr
closure.incr()
weakmap incr
weakmap.incr()
symbol incr
symbols.incr()
pso incr
pso.incr()
pso get
pso.get()