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
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... 20console.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.