À retenir
- C'est un échange : on utilise un peu plus de mémoire pour gagner beaucoup de vitesse.
- Cela ne fonctionne que pour les fonctions prévisibles (les mêmes entrées donnent toujours la même sortie).
- C'est l'un des piliers de la programmation dynamique.
La mémoïsation est une technique de programmation qui permet d'accélérer un logiciel en évitant de refaire plusieurs fois le même calcul. Lorsqu'un programme exécute une opération coûteuse en temps, il enregistre le résultat dans un coin de sa mémoire (un cache). Si la même demande revient, il ressort immédiatement la réponse stockée au lieu de relancer tout le calcul.
Étymologie
Le mot vient de l'anglais memoization, un terme forgé en 1968 par Donald Michie. Il dérive du mot memo (note, aide-mémoire). Bien qu'il ressemble au mot « mémorisation », il s'en distingue techniquement pour désigner spécifiquement le stockage des résultats de fonctions informatiques.
Exemples d'usage
- Le calcul de la suite de Fibonacci : sans mémoïsation, l'ordinateur recalcule inutilement des milliers de fois les mêmes étapes ; avec, il devient quasi instantané.
- En développement web avec React, la fonction
useMemopermet de ne pas recalculer une valeur complexe si les données d'entrée n'ont pas changé.
Cas d'usage
On l'utilise principalement dans les algorithmes récursifs, le traitement de données massives, ou pour optimiser l'affichage d'interfaces graphiques complexes. Elle est très utile dès qu'une fonction est dite pure (elle renvoie toujours le même résultat pour les mêmes paramètres).
Bonnes pratiques
Attention à ne pas mémoïser des fonctions qui dépendent de facteurs variables comme l'heure actuelle, un nombre aléatoire ou le contenu d'une base de données qui change souvent. Veillez aussi à la consommation de mémoire vive (RAM) : stocker trop de résultats peut finir par ralentir l'ordinateur au lieu de l'aider.
Synonymes
Antonymes
Conseil
Si vous débutez, imaginez la mémoïsation comme un chef cuisinier qui noterait le résultat d'un mélange d'épices complexe sur un carnet. La prochaine fois, il n'aura plus besoin de tester chaque dosage, il lui suffira de lire sa note. Utilisez-la quand vous remarquez qu'une fonction lourde est appelée répétitivement avec les mêmes arguments.
Questions fréquentes
Est-ce la même chose que le cache web ?
Le principe est identique (stocker pour réutiliser), mais la mémoïsation s'applique spécifiquement au code d'une fonction à l'intérieur d'un programme.
Est-ce que cela ralentit parfois le programme ?
Oui, si le calcul initial est très simple et rapide, le temps passé à chercher dans la mémoire peut être plus long que le calcul lui-même.