À retenir
- Échange de la mémoire (stockage) contre du temps (vitesse).
- S'applique uniquement aux fonctions déterministes (mêmes entrées = même sortie).
- Outil indispensable de la programmation dynamique.
Mémoïser consiste à donner une "mémoire" à une fonction informatique. Au lieu de refaire un calcul complexe à chaque fois, l'ordinateur note le résultat dans un coin (un cache) associé aux paramètres d'entrée ; s'il reçoit à nouveau les mêmes paramètres, il donne la réponse instantanément sans recalculer. C'est un peu comme apprendre ses tables de multiplication par cœur plutôt que de refaire l'addition mentalement à chaque fois.
Étymologie
Le terme est un néologisme adapté de l'anglais memoize, forgé en 1968 par le chercheur Donald Michie. Il provient du mot "memo" (mémorandum), évoquant l'idée de prendre une note pour s'en souvenir plus tard. Ce n'est pas une simple faute d'orthographe de "mémoriser", mais un terme technique précis de l'algorithmique.
Exemples d'usage
- Le calcul de la suite de Fibonacci : sans mémoïsation, un programme recalcule inutilement des milliers de fois les mêmes étapes ; avec elle, il devient quasi instantané.
- En développement d'interface (comme avec React), on mémoïse certains composants pour qu'ils ne se redessinent pas si les informations qu'ils affichent n'ont pas changé.
Cas d'usage
Ce concept intervient massivement dans l'optimisation des performances, particulièrement pour les fonctions gourmandes en processeur, les appels récursifs fréquents ou le rendu graphique web répétitif.
Bonnes pratiques
Il ne faut mémoïser que des fonctions pures, c'est-à-dire des fonctions dont le résultat dépend uniquement des arguments fournis (et pas de l'heure, d'un fichier externe ou du hasard). Attention également à la mémoire vive : stocker trop de résultats peut finir par saturer la RAM.
Synonymes
Antonymes
Conseil
Avant de mémoïser, mesurez les performances de votre code. N'utilisez cette technique que sur les fonctions qui constituent de réels goulots d'étranglement pour gagner en efficacité sans complexifier inutilement votre programme.
Questions fréquentes
Est-ce la même chose que la mise en cache ?
La mémoïsation est un type de mise en cache, mais elle est spécifiquement liée aux appels de fonctions et à leurs arguments.
Faut-il tout mémoïser ?
Non, car la gestion de la mémoire a un coût. Si une fonction est déjà très rapide, la mémoïser pourrait paradoxalement ralentir le programme.