Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Run results for:
Reselect defaultMemoize
Go to the benchmark
Embed
Embed Benchmark Result
Run details:
User agent:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36
Browser:
Chrome 121
Operating system:
Mac OS X 10.15.7
Device Platform:
Desktop
Date tested:
2 years ago
Test name
Executions per second
Original defaultMemoize
284.4 Ops/sec
Optimized defaultMemoize
292.6 Ops/sec
No memoization
321.6 Ops/sec
Script Preparation code:
function defaultEqualityCheck(a, b) { return a === b } function defaultMemoize_original(func, equalityCheck = defaultEqualityCheck) { let lastArgs = null let lastResult = null return (...args) => { if ( lastArgs === null || lastArgs.length !== args.length || !args.every((value, index) => equalityCheck(value, lastArgs[index])) ) { lastResult = func(...args) } lastArgs = args return lastResult } } function defaultMemoize_optimized(func, equalityCheck = defaultEqualityCheck) { const isEqual = (value, index) => equalityCheck(value, lastArgs[index]) let lastArgs = null let lastResult = null return (...args) => { if ( lastArgs === null || lastArgs.length !== args.length || !args.every(isEqual) ) { lastResult = func(...args) } lastArgs = args return lastResult } } function combine(a, b) { return { combined: a + b }; } var combine_original = defaultMemoize_original(combine); var combine_optimized = defaultMemoize_optimized(combine); var NUM_REPEAT = 50000;
Tests:
Original defaultMemoize
let result1 = 0; for (let i = 0; i < NUM_REPEAT; ++i) result1 += combine_original(1, 2).combined;
Optimized defaultMemoize
let result2 = 0; for (let i = 0; i < NUM_REPEAT; ++i) result2 += combine_optimized(1, 2).combined;
No memoization
let result3 = 0; for (let i = 0; i < NUM_REPEAT; ++i) result3 += combine(1, 2).combined;