0 Tage Serie
javascript / intermediate
Snippet

Funktionale Memoisierung für Performance

Memoisierung ist eine Optimierungstechnik, bei der die Ergebnisse teurer Funktionsaufrufe gespeichert werden, um bei gleichen Eingaben das zwischengespeicherte Ergebnis zurückzugeben.

snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
const memoize = (fn) => {
const cache = new Map();
return (arg) => {
if (cache.has(arg)) return cache.get(arg);
const result = fn(arg);
cache.set(arg, result);
return result;
};
};
const heavyMath = n => { console.log('Computing...'); return n * 2; };
const fastMath = memoize(heavyMath);
console.log(fastMath(10)); // Computing... 20
console.log(fastMath(10)); // 20 (cached)
Erklärung
1
const cache = new Map();
Verwendet eine Map, um zuvor berechnete Ergebnisse indiziert nach ihrem Argument zu speichern.
2
return (arg) => {
Gibt eine neue Closure zurück, die Zugriff auf den privaten Cache hat.
3
if (cache.has(arg)) return cache.get(arg);
Prüft, ob die Berechnung für dieses spezifische Argument bereits durchgeführt wurde.
4
cache.set(arg, result);
Speichert das neue Ergebnis im Cache für die zukünftige Verwendung.