Подтвердить что ты не робот

В чем разница между кешированием и записью?

Я хотел бы знать, какова реальная разница между caching и memoization.
На мой взгляд, оба включают избегание повторных вызовов функций для получения данных путем их хранения.

Какая основная разница между ними?

4b9b3361

Ответ 1

Мемоизация - это особая форма кэширования, которая включает в себя кэширование возвращаемого значения функции на основе ее параметров.

Кэширование - более общий термин; Например, HTTP-кэширование - это кеширование, а не запоминание.

Википедия говорит:

Хотя запоминание относится к кешированию, оно относится к конкретному случаю этой оптимизации, отличая ее от форм кеширования, таких как буферизация или замена страниц.

Ответ 2

Как я видел, они используются, "memoization" - это "кеширование результата детерминированной функции", которое может быть воспроизведено в любое время с той же функцией и входами.

"Кэширование" включает в себя в основном любую стратегию вывода-буферизации, независимо от того, воспроизводится ли исходное значение в данный момент времени. На самом деле кэширование также используется для обозначения стратегий буферизации ввода, таких как кеш-запись на диске или в памяти. Так что это гораздо более общий термин.

Ответ 3

Я думаю, что кэширование термина обычно используется, когда вы сохраняете результаты операций ввода-вывода или в основном любые данные, поступающие к вам извне (файлы, сеть, запросы db). Термическая memoization обычно применяется для хранения результатов ваших собственных вычислений, например, в контексте динамического программирования.

Ответ 4

Memoization - это особая форма кэширования результата детерминированной функции. Это означает, что кеширование результата вне функции не является memoization, потому что функция должна будет мутировать кеш при вычислении нового результата (еще не в кеше), поэтому он больше не будет (чистой) функцией. Запоминание обычно подразумевает передачу кеша в качестве дополнительного аргумента (в вспомогательной функции). Memoization будет оптимизировать функции, которые необходимо вычислить значения несколько раз для одного доступа. Кэширование будет оптимизировать функции, которые вызываются несколько раз с теми же параметрами. Другими словами, Memoization оптимизирует первый доступ, будет ли кеширование оптимизировать повторный доступ.

Ответ 5

Я хотел бы добавить к другим отличным ответам, что памятка также известна как табулирование. Я думаю, что также важно знать этот термин для тех, кто изучает, что такое запоминание и кэширование.