Qu'est-ce que la mémorisation ?
sobes.tech IA
Réponse de l'IA
La mémorisation est une technique d'optimisation utilisée en programmation pour accélérer l'exécution des fonctions en mettant en cache les résultats de leurs appels avec certains paramètres d'entrée.
Lorsqu'on appelle la fonction par la suite avec les mêmes arguments que précédemment, la fonction ne recalculera pas le résultat, mais renverra la valeur stockée dans le cache.
C'est particulièrement efficace pour les fonctions gourmandes en ressources et ayant un comportement déterministe (fonctions qui renvoient toujours le même résultat pour les mêmes données d'entrée).
Avantages :
- Accélération des fonctions gourmandes en ressources.
- Réduction de la charge du processeur en évitant les recalculs.
Inconvénients :
- Augmentation de la consommation de mémoire pour stocker le cache.
- Peut ne pas être efficace pour les fonctions souvent appelées avec des arguments différents ou changeant leur comportement.
Exemple en JavaScript :
function fibonacci(n) { // Définition fonctionnelle des nombres de Fibonacci
if (n <= 1) {
return n;
}
return fibonacci(n - 1) + fibonacci(n - 2); // Appel récursif
}
// Version mémorisée de la fonction fibonacci
function memoizedFibonacci(n, cache = {}) {
if (n in cache) { // Vérifie si le résultat est dans le cache
return cache[n];
}
if (n <= 1) {
return n;
}
// Calcule et stocke le résultat dans le cache
cache[n] = memoizedFibonacci(n - 1, cache) + memoizedFibonacci(n - 2, cache);
return cache[n];
}
// Comparaison de la vitesse d'exécution:
console.time('Sans mémorisation');
fibonacci(40);
console.timeEnd('Sans mémorisation'); // Temps beaucoup plus long
console.time('Avec mémorisation');
memoizedFibonacci(40);
console.timeEnd('Avec mémorisation'); // Temps beaucoup plus court
Dans cet exemple, sans mémorisation, la fonction fibonacci recalculait plusieurs fois les mêmes valeurs. La version mémorisée memoizedFibonacci stocke les valeurs calculées dans l'objet cache, accélérant considérablement les appels suivants avec les mêmes arguments.