В чем разница между кэшем и мемоизация?



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



в чем разница между ними?

938   4  

4 ответов:

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

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

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

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

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

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

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

Comments

    Ничего не найдено.