Memoization (functions caching store)

JS
S
JavaScript

Memoization is Caching for functions Requirement: the function must be pure / deterministic Libraries: https://github.com/caiogondim/fast-memoize.js

1// Factorial Example
2const factorial = num => {
3  // Cache control as a function property
4  if(!factorial.cache){
5    factorial.cache = {}
6  }
7  if(factorial.cache[num] !== undefined){
8    return factorial.cache[num];
9  }
10  factorial.cache[num] = num === 0 ? 1 : num * factorial(num - 1);
11  return factorial.cache[num];
12}
13
14// Iteration 1
15console.time('factorial');
16factorial(20);
17console.timeEnd('factorial');
18
19// Iteration 2
20console.time('factorial');
21factorial(20);
22console.timeEnd('factorial');
23
24// Iteration 3
25console.time('factorial');
26factorial(20);
27console.timeEnd('factorial');
28

Created on 3/12/2019