Je voudrais savoir quelle est la différence réelle entre caching
et memoization
.
À mon avis, les deux impliquent d' éviter les appels de fonction répétés pour obtenir des données en les stockant .
Quelle est la différence fondamentale entre les deux?
Réponses:
La mémorisation est une forme spécifique de mise en cache qui implique la mise en cache de la valeur de retour d'une fonction en fonction de ses paramètres .
La mise en cache est un terme plus général; par exemple, la mise en cache HTTP est la mise en cache mais pas la mémorisation.
Wikipedia dit :
la source
If-Match
que les expirations. La mémorisation n'a de sens que pour la fonction pure, ce que HTTP est rarement.Comme je les ai vus utilisés, la "mémorisation" consiste à "mettre en cache le résultat d'une fonction déterministe" qui peut être reproduite à tout moment avec la même fonction et les mêmes entrées.
La "mise en cache" comprend essentiellement toute stratégie de mise en mémoire tampon de sortie, que la valeur source soit reproductible ou non à un instant donné. En fait, la mise en cache est également utilisée pour désigner des stratégies de mise en mémoire tampon d' entrée , telles que le cache d'écriture sur un disque ou une mémoire. C'est donc un terme beaucoup plus général.
la source
Je pense que la mise en cache du terme est généralement utilisée lorsque vous stockez les résultats des opérations d'E / S, ou essentiellement toutes les données qui vous parviennent de l'extérieur (fichiers, réseau, requêtes de base de données). La mémorisation des termes s'applique généralement au stockage des résultats de vos propres calculs, par exemple dans le contexte de la programmation dynamique.
la source
La mémorisation est une forme spéciale de mise en cache du résultat d'une fonction déterministe. Cela signifie que la mise en cache du résultat en dehors de la fonction n'est pas une mémorisation car la fonction devrait muter le cache lors du calcul d'un nouveau résultat (pas déjà dans le cache) afin que ce ne soit plus une fonction (pure). La mémorisation implique généralement de passer le cache comme argument supplémentaire (dans une fonction d'assistance). La mémorisation optimisera les fonctions qui doivent calculer des valeurs plusieurs fois pour un seul accès. La mise en cache optimisera les fonctions appelées plusieurs fois avec les mêmes paramètres. En d'autres termes, la mémorisation optimisera le premier accès si la mise en cache optimisera uniquement les accès récurrents.
la source
Je voudrais ajouter aux autres excellentes réponses que la mémorisation est également connue sous le nom de dépôt . Je pense qu'il est également important de connaître ce terme pour ceux qui apprennent ce que sont la mémorisation et la mise en cache.
la source