Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Run results for:
Memoization functions
Test different memoization functions
Go to the benchmark
Embed
Embed Benchmark Result
Run details:
User agent:
Mozilla/5.0 (iPhone; CPU iPhone OS 16_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.3 Mobile/15E148 Safari/604.1
Browser:
Mobile Safari 16
Operating system:
iOS 16.3.1
Device Platform:
Mobile
Date tested:
2 years ago
Test name
Executions per second
Memoize
302.6 Ops/sec
Memoize without closure
291.5 Ops/sec
Script Preparation code:
//------------------ SETUP function memoizeWithoutClosure(fn) { const memoizedFunction = () => { if (memoizedFunction.cache === undefined) { memoizedFunction.cache = fn(); } return memoizedFunction.cache; }; return memoizedFunction; } function memoize(fn) { let cachedResult; return () => { if (cachedResult === undefined) { cachedResult = fn(); } return cachedResult; }; } var funcs = [...Array(5000).keys()].map(_ => (() => 'ashkjsaskhkajhdkajhdk')); //----------- MEMOIZE WIthour Closure const memoizedFuncs = funcs.map(fn => memoizeWithoutClosure(fn)); memoizedFuncs.forEach(fn => fn()); memoizedFuncs.forEach(fn => fn());
Tests:
Memoize
//------------ MEMOIZE const memoizedFuncs = funcs.map(fn => memoize(fn)); memoizedFuncs.forEach(fn => fn()); memoizedFuncs.forEach(fn => fn());
Memoize without closure
//----------- MEMOIZE without Closure const memoizedFuncs = funcs.map(fn => memoizeWithoutClosure(fn)); memoizedFuncs.forEach(fn => fn()); memoizedFuncs.forEach(fn => fn());