134 votes

Quelle est la différence entre le cache et la mémorisation?

J'aimerais savoir quelle est la différence réelle entre la mise en cache et la mémorisation. Si je comprends bien, les deux impliquent d'éviter les appels de fonction répétés pour obtenir des données en les stockant. Alors, quelle est la différence entre les deux?

Merci

132voto

SLaks Points 391154

Memoization est une forme spécifique de mise en cache qui implique la mise en cache de la valeur de retour d'une fonction sur la base de ses paramètres.

La mise en cache est un terme plus général; par exemple, la mise en cache HTTP est mise en cache, mais pas memoization.

Wikipédia dit:

Bien que liée à la mise en cache, memoization se réfère à un cas particulier de cette optimisation, qui se distingue des formes de mise en cache comme la mise en mémoire tampon ou de remplacement de page.

50voto

harpo Points 17399

Comme je les ai vus utilisés, "mémoization" est "la mise en cache du 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 ou non reproductible à un moment donné. En fait, la mise en cache est également utilisée pour faire référence aux stratégies de mise en mémoire tampon des entrées , telles que le cache en écriture sur un disque ou en mémoire. C'est donc un terme beaucoup plus général.

6voto

MK. Points 11889

Je pense que la mise en cache des termes est généralement utilisée lorsque vous stockez les résultats d'opérations d'E / S, ou en gros les données qui vous parviennent de l'extérieur (fichiers, réseau, requêtes de base de données). La mémoisation 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.

1voto

user2120553 Points 11

Memoization est une forme particulière de mise en cache le résultat d'une fonction déterministe. Cela signifie que la mise en cache le résultat à l'extérieur de la fonction n'est pas memoization parce que la fonction serait de muter le cache lors du calcul d'un nouveau résultat (pas déjà dans le cache) donc il ne devrait pas être un (pur) fonctionnent plus. Memoization généralement implique de passer de la cache comme un argument supplémentaire (dans une fonction d'assistance). Memoization permettra d'optimiser les fonctions qui ont besoin de calculer des valeurs plusieurs fois pour un seul accès. La mise en cache d'optimiser les fonctions qui sont appelées plusieurs fois avec les mêmes paramètres. En d'autres termes, Memoization permettra d'optimiser au premier abord de savoir si la mise en cache seulement d'optimiser récurrentes d'accès.

-2voto

nicolas Points 2172

Je ne vois aucune différence. La mise en cache pure peut être vue comme une mémorisation d'une fonction sans argument. Il n'y a aucune caractéristique que je puisse distinguer entre les deux ...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X