Me gustaría saber cuál es la diferencia real entre caching
y memoization
.
Como yo lo veo, ambos implican evitar llamadas de función repetidas para obtener datos almacenándolos .
¿Cuál es la principal diferencia entre los dos?
Me gustaría saber cuál es la diferencia real entre caching
y memoization
.
Como yo lo veo, ambos implican evitar llamadas de función repetidas para obtener datos almacenándolos .
¿Cuál es la principal diferencia entre los dos?
Respuestas:
La memorización es una forma específica de almacenamiento en caché que implica almacenar en caché el valor de retorno de una función en función de sus parámetros .
El almacenamiento en caché es un término más general; por ejemplo, el almacenamiento en caché HTTP es almacenamiento en caché pero no memorización.
Wikipedia dice :
Aunque se relaciona con el almacenamiento en caché, la memorización se refiere a un caso específico de esta optimización, distinguiéndola de las formas de almacenamiento en caché como el almacenamiento en búfer o el reemplazo de páginas.
If-Match
y vencimientos. La memorización solo tiene sentido para la función pura, lo que HTTP rara vez lo es.
Como los he visto usados, "memorización" es "almacenar en caché el resultado de una función determinista" que se puede reproducir en cualquier momento con la misma función y entradas.
El "almacenamiento en caché" incluye básicamente cualquier estrategia de almacenamiento en búfer de salida, ya sea que el valor de origen sea reproducible o no en un momento dado. De hecho, el almacenamiento en caché también se utiliza para referirse a estrategias de almacenamiento en búfer de entrada , como la caché de escritura en un disco o memoria. Entonces es un término mucho más general.
Creo que el término almacenamiento en caché se usa generalmente cuando almacena los resultados de las operaciones de E / S, o básicamente cualquier dato que le llega desde el exterior (archivos, red, consultas de base de datos). La memorización de términos generalmente se aplica al almacenamiento de resultados de sus propios cálculos, por ejemplo, en el contexto de la programación dinámica.
La memorización es una forma especial de almacenar en caché el resultado de una función determinista. Esto significa que almacenar en caché el resultado fuera de la función no es memorización porque la función tendría que mutar la caché al calcular un nuevo resultado (que no esté ya en la caché) para que ya no sea una función (pura). La memorización generalmente implica pasar el caché como un argumento adicional (en una función auxiliar). La memorización optimizará las funciones que necesitan calcular valores varias veces para un solo acceso. El almacenamiento en caché optimizará las funciones que se llaman varias veces con los mismos parámetros. En otras palabras, Memoization optimizará el primer acceso si el almacenamiento en caché solo optimizará los accesos recurrentes.