Memoization

JavaScript 🟡 Mid

Definition

Technique de cache qui stocke le resultat d'un appel de fonction base sur ses arguments. Si les memes arguments sont repasses, le resultat est retourne du cache sans recalcul.

Analogie

Un carnet de notes : avant de recalculer, tu verifies si tu as deja note la reponse.

Exemple de code

function memoize(fn) {
  const cache = new Map();
  return function(...args) {
    const key = JSON.stringify(args);
    if (cache.has(key)) return cache.get(key);
    const result = fn.apply(this, args);
    cache.set(key, result);
    return result;
  };
}

Cas d'usage

Fonctions de calcul couteux appelees frequemment avec les memes parametres (fibonacci, selectors Redux).

Anti-pattern

Memoiser des fonctions avec des effets de bord ou des arguments non serialisables.
#core#performance#fonctionnel