캐싱과 메모 화의 차이점은 무엇입니까?
나는 무엇을 실제의 차이 사이에 알고 싶습니다 caching
하고 memoization
있다.
내가 볼 수 있듯이, 둘 다 데이터를 저장하여 데이터를 얻기 위해 반복되는 함수 호출을 피하는 것을 포함 합니다 .
둘의 핵심 차이점은 무엇입니까?
메모 화는 매개 변수를 기반으로 함수의 반환 값을 캐싱하는 것과 관련된 특정 형태의 캐싱입니다.
캐싱은보다 일반적인 용어입니다. 예를 들어, HTTP 캐싱은 캐싱이지만 메모 화는 아닙니다.
Wikipedia 말한다 :
캐싱과 관련이 있지만 메모 화는이 최적화의 특정 사례를 나타내며 버퍼링 또는 페이지 교체와 같은 캐싱 형식과 구별됩니다.
내가 본 것처럼 "기억"은 "결정 론적 함수의 결과를 캐싱"하는 것으로 동일한 함수와 입력이 주어지면 언제든지 재현 할 수 있습니다.
"캐싱"에는 기본적으로 소스 값이 주어진 시간에 재현 가능한지 여부에 관계없이 모든 출력 버퍼링 전략이 포함됩니다. 실제로 캐싱은 디스크 또는 메모리의 쓰기 캐시와 같은 입력 버퍼링 전략 을 참조하는데도 사용됩니다 . 따라서 훨씬 더 일반적인 용어입니다.
캐싱이라는 용어는 일반적으로 IO 작업의 결과 또는 기본적으로 외부에서 들어오는 모든 데이터 (파일, 네트워크, db 쿼리)를 저장할 때 사용됩니다. 용어 메모 화는 일반적으로 예를 들어 동적 프로그래밍의 맥락에서 자신의 계산 결과를 저장하는 데 적용됩니다.
메모 화는 결정적 함수의 결과를 캐싱하는 특별한 형태입니다. 이것은 함수 외부에서 결과를 캐싱하는 것은 메모 화가 아님을 의미합니다. 그 이유는 함수가 새로운 결과 (캐시에 아직 없음)를 계산할 때 캐시를 변경해야하므로 더 이상 (순수한) 함수가되지 않기 때문입니다. 메모 화는 일반적으로 캐시를 추가 인수로 전달하는 것을 의미합니다 (도우미 함수에서). 메모 화는 단일 액세스에 대해 여러 번 값을 계산해야하는 함수를 최적화합니다. 캐싱은 동일한 매개 변수로 여러 번 호출되는 함수를 최적화합니다. 즉, Memoization은 캐싱이 반복적 인 액세스 만 최적화하는지 여부에 관계없이 첫 번째 액세스를 최적화합니다.
나는 다른 큰 응답에 추가 할 메모이 제이션이 로도 알려져 테이블 화 . 메모 화와 캐싱이 무엇인지 배우는 사람들에게이 용어를 아는 것도 중요하다고 생각합니다.
참고 URL : https://stackoverflow.com/questions/6469437/what-is-the-difference-between-caching-and-memoization
'Programming' 카테고리의 다른 글
ggplot : 패싯 플롯 사이의 간격을 늘리는 방법은 무엇입니까? (0) | 2020.08.20 |
---|---|
프로덕션 Windows Server에 설치된 .NET 버전을 알 수있는 확실한 방법은 무엇입니까? (0) | 2020.08.20 |
CMake에서 include_directories와 target_include_directories의 차이점은 무엇입니까? (0) | 2020.08.20 |
HTML 이미지 크기 조정 (0) | 2020.08.20 |
Swift Xcode 인덱스 동결 또는 느림 (0) | 2020.08.20 |