>  기사  >  lru와 lfu 알고리즘의 차이점은 무엇입니까?

lru와 lfu 알고리즘의 차이점은 무엇입니까?

青灯夜游
青灯夜游원래의
2021-05-07 15:35:5918449검색

차이점: LRU는 가장 오랫동안 사용되지 않은 페이지를 제거하는 가장 최근에 사용된 페이지 교체 알고리즘인 반면, LFU는 가장 적게 방문한 페이지를 제거하는 가장 최근에 사용된 페이지 교체 알고리즘입니다. 특정 기간에. LRU의 핵심은 페이지가 마지막으로 사용된 시점부터 스케줄링이 발생할 때까지의 시간을 보는 것이고, LFU의 핵심은 일정 기간 동안 페이지를 사용하는 빈도를 보는 것입니다.

lru와 lfu 알고리즘의 차이점은 무엇입니까?

이 튜토리얼의 운영 환경: Windows 7 시스템, Dell G3 컴퓨터.

웹 개발에서 캐싱은 필수적이며 성능을 향상시키는 가장 일반적인 방법이기도 합니다. 브라우저 캐시(Chrome 브라우저인 경우 chrome:://cache를 통해 볼 수 있음)이든 서버 측 캐시(memcached 또는 redis와 같은 메모리 내 데이터베이스를 통해)이든 상관없습니다. 캐싱은 사용자 액세스 속도를 높일 뿐만 아니라 서버 부하와 부담도 줄일 수 있습니다. 그런 다음 일반적인 캐시 제거 알고리즘의 전략과 원리를 이해하는 것이 특히 중요합니다.

공통 캐싱 알고리즘

  • LRU (Least Recent Used) 최근에 액세스한 데이터라면 앞으로도 액세스할 확률도 높습니다.
  • LFU(최소 빈도 사용) 가장 적게 사용되는 데이터입니다. 최근 기간에 거의 사용되지 않은 데이터는 앞으로도 사용될 가능성이 매우 낮습니다.
  • FIFO(Fist in First Out). 데이터 조각이 캐시에 먼저 들어가면 먼저 제거해야 합니다.

LRU 캐시

브라우저 캐싱 전략 및 Memcached 캐싱 전략과 마찬가지로 LRU 알고리즘은 가까운 미래에 가장 적게 액세스할 데이터를 제거합니다. LRU가 인기를 끄는 이유는 상대적으로 구현이 간단하고 런타임 성능이 좋고 적중률이 높아 실질적인 문제 해결에도 매우 실용적이기 때문입니다. LRU 캐시 구현 방법에 대해 이야기해 보겠습니다.

  • 새로운 데이터가 연결 목록의 헤드에 삽입됩니다.
  • 캐시가 히트할 때마다(즉, 캐시된 데이터에 액세스할 때마다) 데이터가 헤드로 이동됩니다. of the linked list
  • Linked List가 가득 차면 Linked List의 끝 부분에 있는 데이터를 삭제합니다

LRU 캐시는 다음과 같은 작업을 수행합니다.

  • set(key, value): 해시맵에 키가 존재하는 경우 , 해당 값을 먼저 재설정한 다음 해당 노드 cur를 획득하고 설정합니다. cur 노드는 연결 리스트에서 삭제되고 해시맵에 키가 없으면 새 노드가 생성됩니다. 그리고 연결리스트의 선두에 위치한다. 캐시가 가득 차면 연결리스트의 마지막 노드를 삭제하면 됩니다.
  • get(key): 해시맵에 키가 있으면 해당 노드를 연결 목록의 선두에 놓고 해당 값이 없으면 -1을 반환합니다.

LRU와 LFU의 차이점:

LRU는 가장 최근에 사용된 페이지 교체 알고리즘(Least Recent Used)입니다. 즉, 가장 오랫동안 사용되지 않은 페이지가 먼저 제거됩니다!

LFU는 가장 적게 사용되는 페이지 교체 알고리즘(Least 빈번하게 사용됨)으로, 특정 기간 동안 가장 적게 방문한 페이지를 제거하는 것을 의미합니다!

예를 들어 두 번째 방법의 주기 T는 10분입니다. 매분마다 페이징을 수행하면 주 메모리 블록은 3입니다. 필요한 페이지 방향이 2 1 2 1 2 3 4라면

참고로 4를 페이징할 때 LRU 알고리즘을 사용하는 경우 페이지 누락 인터럽트가 발생하지만, LRU 알고리즘을 사용하는 경우 페이지 1을 변경해야 하지만(1페이지가 가장 오랫동안 사용되지 않은 경우) LFU 알고리즘에 따라 페이지 3을 변경해야 합니다( 3페이지는 10분 이내에 한 번만 사용되었습니다.) 요약

LRU의 핵심은 페이지가 마지막으로 사용된 시간과 예약 사이의 시간을 확인하는 것임을 알 수 있습니다. LFU는 일정 기간 동안 페이지 사용 빈도를 살펴보는 것입니다!

더 많은 관련 지식을 알고 싶다면 FAQ

칼럼을 방문해주세요!

위 내용은 lru와 lfu 알고리즘의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.