react one memoize cache caching terminology memoization

one - ¿Cuál es la diferencia entre Caching y Memoization?



memoize react (4)

Como los he visto usar, la "memoria" es "el almacenamiento en caché del resultado de una función determinista" que se puede reproducir en cualquier momento con la misma función y las mismas entradas.

El "almacenamiento en caché" incluye básicamente cualquier estrategia de almacenamiento en búfer de salida, independientemente de si el valor de origen es reproducible en un momento determinado. De hecho, el almacenamiento en caché también se utiliza para referirse a las estrategias de almacenamiento en búfer de entrada , como la memoria caché de escritura en un disco o memoria. Entonces es un término mucho más general.

Me gustaría saber cuál es la diferencia real entre el almacenamiento en caché y la memorización. Tal como lo veo, ambos implican evitar llamadas a funciones repetidas para obtener datos almacenándolos.

¿Cuál es la diferencia entre los dos?


Creo que el caché de términos generalmente se usa cuando almacena resultados de operaciones de IO, o básicamente cualquier información que le llega desde afuera (archivos, red, consultas de DB). La memorización de términos generalmente se aplica al almacenamiento de los resultados de sus propios cálculos, por ejemplo, en el contexto de la programación dinámica.


La memorización es una forma específica de almacenamiento en caché que implica el almacenamiento en caché del 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é de HTTP es el almacenamiento en caché pero no la memorización.

Wikipedia says :

Aunque relacionado con el almacenamiento en caché, la memoria se refiere a un caso específico de esta optimización, que lo distingue de las formas de almacenamiento en caché, como el almacenamiento en memoria intermedia o el reemplazo de páginas.


La memorización es una forma especial de almacenar en caché el resultado de una función determinista. Esto significa que el almacenamiento en caché del resultado fuera de la función no es una función de memorización, ya que la función tendría que mutar la memoria caché al calcular un resultado nuevo (que ya no está en la memoria 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 invocan 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.