À retenir
- Échange de la mémoire (RAM) contre de la vitesse (CPU).
- S'applique uniquement aux calculs déterministes (prévisibles).
- Évite les calculs redondants et inutiles.
La mémoization est une technique qui permet d'accélérer un programme en enregistrant le résultat d'un calcul complexe pour ne pas avoir à le refaire plus tard. Imaginez un écolier qui apprend ses tables de multiplication par cœur : au lieu de recalculer 7x8 à chaque fois, il va puiser directement la réponse '56' dans sa mémoire.
Étymologie
Le terme provient de l'anglais memoization, forgé en 1968 par le chercheur Donald Michie. Il dérive du mot memo (note, aide-mémoire). Bien qu'il ressemble au mot 'mémorisation', il désigne spécifiquement le stockage des résultats de fonctions informatiques.
Exemples d'usage
- Le calcul de la suite de Fibonacci : sans mémoization, l'ordinateur refait des milliers de fois les mêmes additions ; avec, il se souvient des étapes précédentes et finit instantanément.
- L'affichage d'un composant complexe dans une interface web (comme avec React.memo) qui ne se recalcule que si ses données sources changent.
Cas d'usage
On l'utilise principalement dans les algorithmes récursifs gourmands en ressources, dans le développement d'interfaces graphiques pour éviter des rafraîchissements inutiles, et en programmation fonctionnelle pour optimiser des traitements de données répétitifs.
Bonnes pratiques
Il est crucial d'utiliser cette technique uniquement sur des fonctions pures, c'est-à-dire des fonctions qui renvoient toujours le même résultat pour les mêmes paramètres. Il faut aussi surveiller la consommation de mémoire vive (RAM), car stocker trop de résultats peut finir par ralentir le système au lieu de l'aider.
Synonymes
Antonymes
Conseil
Pour débuter, ne cherchez pas à mémoizer tout votre code. Identifiez les fonctions qui sont appelées des centaines de fois avec les mêmes arguments et qui ralentissent votre application. C'est là que le gain sera le plus visible.
Questions fréquentes
Quelle est la différence entre mémoization et mise en cache ?
La mémoization est une forme spécifique de cache appliquée au résultat d'une fonction, tandis que le 'cache' est un terme plus large (cache de navigateur, cache processeur, etc.).
Est-ce que cela ralentit parfois le code ?
Oui, si le calcul est très simple et rapide à faire, le temps passé à chercher dans la mémoire peut être plus long que le calcul lui-même.