캐싱과 메모 화의 차이점은 무엇입니까?


114

나는 무엇을 실제의 차이 사이에 알고 싶습니다 caching하고 memoization있다.
내가 볼 수 있듯이, 둘 다 데이터를 저장하여 데이터를 얻기 위해 반복되는 함수 호출을 피하는 것을 포함 합니다 .

둘의 핵심 차이점은 무엇입니까?


"메모리는 캐싱에있다"라고 "배열은 희소 배열에있다"라고 말할 수 있을지 궁금합니다. 즉, 가능한 모든 입력 조합을 열거하지 않고 "요청시"에만 항목을 저장합니다.
Sridhar Sarnobat

답변:


110

메모 화는 매개 변수를 기반으로 함수의 반환 값을 캐싱하는 것과 관련된 특정 형태의 캐싱입니다 .

캐싱은보다 일반적인 용어입니다. 예를 들어, HTTP 캐싱은 캐싱이지만 메모 화는 아닙니다.

Wikipedia 말한다 :

캐싱과 관련이 있지만 메모 화는이 최적화의 특정 사례를 나타내며 버퍼링 또는 페이지 교체와 같은 캐싱 형식과 구별됩니다.


2
그러나 캐시가 함수와 함께 사용되는 부분을 항상 '기억'이라고 명명 할 수 있습니다. 차이점은 함수의 캐싱 정책을 제어하는 ​​반면 메모 화는 더 높은 순서이며 내가 추측하는 함수 외부에서 발생한다는 것입니다.
nicolas

HTTP 캐싱이 암기가 아닌 이유는 무엇입니까? 또한 매개 변수 (요청 된 리소스의 URL)를 기반으로합니다.
topo 복원 Monica

@topomorto : 같은 기능 If-Match과 만료로 인해 . 메모 화는 HTTP가 거의없는 순수 기능에만 의미가 있습니다.
SLaks 2018 년

@nicolas, 정답은 아닙니다. 저는 암기 에서 "함수"라는 용어가 순수 / 수학적 의미로 사용 되었다고 생각합니다 . 지정된 주소에서 웹 페이지를 다운로드하는 것은 페이지가 변경 될 수 있으므로 기능으로 간주 할 수 없습니다.
Alexey

@Alexey는 캐싱에 동일한 설명이 적용되지 않습니까? 이러한 모든 전략은 동일한 결과를 제공하는 동일한 함수 호출에 의존 합니다. 즉, 업스트림 부작용이 없습니다 .
nicolas

47

내가 본 것처럼 "기억"은 "결정 론적 함수의 결과를 캐싱"하는 것으로 동일한 함수와 입력이 주어지면 언제든지 재현 할 수 있습니다.

"캐싱"에는 기본적으로 소스 값이 주어진 시간에 재현 가능한지 여부에 관계없이 모든 출력 버퍼링 전략이 포함됩니다. 실제로 캐싱은 디스크 또는 메모리의 쓰기 캐시와 같은 입력 버퍼링 전략 을 참조하는데도 사용됩니다 . 따라서 훨씬 더 일반적인 용어입니다.


함수가 결정적이어야한다고 확신합니까?
Gherman

4
@ 독일어, 예, 메모 화는 결정론에 달려 있습니다. 고전적인 예는 피보나치 수열 또는 계승과 같은 재귀 알고리즘입니다. 기본 케이스까지 다시 계산하는 대신 메모 화 된 함수는 이미 계산 된 값에 대해 이전 결과를 재사용하여 단락됩니다. 이것은 결정론의 정의 인 동일한 출력을 산출하는 동일한 입력에 분명히 의존합니다. 반면 캐싱은 결과가 "새로 고침 된"값과 일치하지 않을 수 있다는 이해와 함께 비 결정적 (예 : 무작위 또는 타임 스탬프) 프로세스에 자주 사용됩니다.
harpo

6

캐싱이라는 용어는 일반적으로 IO 작업의 결과 또는 기본적으로 외부에서 들어오는 모든 데이터 (파일, 네트워크, db 쿼리)를 저장할 때 사용됩니다. 용어 메모 화는 일반적으로 예를 들어 동적 프로그래밍의 맥락에서 자신의 계산 결과를 저장하는 데 적용됩니다.


1

메모 화는 결정적 함수의 결과를 캐싱하는 특별한 형태입니다. 이것은 함수 외부에서 결과를 캐싱하는 것은 메모 화가 아님을 의미합니다. 그 이유는 함수가 새로운 결과를 계산할 때 (캐시에 있지 않은) 캐시를 변경해야하므로 더 이상 (순수한) 함수가되지 않기 때문입니다. 메모 화는 일반적으로 캐시를 추가 인수로 전달하는 것을 의미합니다 (도우미 함수에서). 메모 화는 단일 액세스에 대해 여러 번 값을 계산해야하는 함수를 최적화합니다. 캐싱은 동일한 매개 변수로 여러 번 호출되는 함수를 최적화합니다. 즉, Memoization은 캐싱이 반복적 인 액세스 만 최적화하는지 여부에 관계없이 첫 번째 액세스를 최적화합니다.


0

나는 다른 큰 응답에 추가 할 메모이 제이션이 로도 알려져 테이블 화 . 메모 화와 캐싱이 무엇인지 배우는 사람들에게이 용어를 아는 것도 중요하다고 생각합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.