Я хотів би знати , що фактична різниця між caching
і memoization
є.
Як я бачу, обидва передбачають уникати повторних викликів функцій для отримання даних, зберігаючи їх .
У чому суть різниці між ними?
Я хотів би знати , що фактична різниця між caching
і memoization
є.
Як я бачу, обидва передбачають уникати повторних викликів функцій для отримання даних, зберігаючи їх .
У чому суть різниці між ними?
Відповіді:
Пам'ять - це специфічна форма кешування, яка включає кешування поверненого значення функції на основі її параметрів .
Тренування - більш загальний термін; наприклад, кешування HTTP - це кешування, але не запам'ятовування.
У Вікіпедії сказано :
Хоча пов'язане з кешуванням, запам'ятовування відноситься до конкретного випадку цієї оптимізації, відрізняючи її від таких форм кешування, як буферизація або заміна сторінки.
If-Match
і термін дії. Пам'ять має сенс лише для чистої функції, якою HTTP рідко є.
Як я бачив, як вони їх використовували, "запам'ятовування" - це "кешування результату детермінованої функції", яке може бути відтворене в будь-який час, отримавши ту саму функцію та входи.
"Кешування", в основному, включає будь-яку стратегію буферизації вихідних даних, незалежно від того, значення джерела можна відтворити в даний момент часу. Насправді кешування також використовується для позначення стратегій буферизації вхідних даних , таких як кеш-запис на диск або пам'ять. Так що це набагато більш загальний термін.
Я думаю, що термін кешування зазвичай використовується, коли ви зберігаєте результати операцій вводу-виводу або в основному будь-які дані, які надходять до вас ззовні (файли, мережа, db-запити). Запам'ятовування термінів зазвичай стосується зберігання результатів власних обчислень, наприклад в контексті динамічного програмування.
Пам'ять - це особлива форма кешування результату детермінованої функції. Це означає, що кешування результату поза функцією не є запам'ятовуванням, тому що функція повинна мутувати кеш під час обчислення нового результату (ще не в кеші), тому це більше не буде (чистою) функцією. Пам'ять зазвичай передбачає передачу кешу як додатковий аргумент (у функції помічника). Пам'ять оптимізує функції, яким потрібно обчислити значення кілька разів для одного доступу. Кешування оптимізує функції, які викликаються кілька разів з однаковими параметрами. Іншими словами, Memoization оптимізує перший доступ, чи кешування буде оптимізувати лише періодичні звернення.