캐시
[JS] 캐시
오랜만에 LRU캐시에 대해 학습하였다. LRU 캐시란 Least Recently Used 즉, 가장 오래전에 사용된 데이터를 제거하는 방식을 가진 캐시이다. 처음에 이왕 추상화를 해볼꺼 더블 링크드 리스트를 구현해서 만드려고 했는데 어차피 캐시의 크기가 최대 30개이고 귀찮음이 발동해서 LRU 클래스를 만들어 보는것으로 타협해보았다. LRU클래스는 캐시와 maxSize만 가지고 있다. set명령어로 캐시에 값을 넣을때 캐시에 값이 있다면 해당 값을 캐시의 맨 앞으로 보내주고, 실행시간인 1을 반환해준다. 캐시에 아무것도 없다면 캐시의 맨앞에 새로운값을 넣어주고 만약 캐시의 크기가 초과되었다면 가장 오래된 값을 캐시에서 제거해준다. 그리고 실행시간인 5를 반환해준다. 문제에서 대소문자를 구별한다고 하지 않..
캐시교체 정책
캐시란 CPU 칩안에 들어가는 작고 빠른 메모리이다. 프로세서가 매번 메인 모메리에 접근하는것은 시간도 오래걸리고 물리적으로도 거리가 멀다. 하지만 캐시를 이용하면 가깝기 때문에 시간도 매우 절약할 수 있다. =⇒ 결국 캐시메모리도 유한하기때문에 캐시에 어떤 정보를 담아두는지가 매우 중요하다. 그렇다면 이 자주 사용하는 데이터에 관한 판단은 어떻게 정할 수 있을까? 데이터에 관한 판단은 지역성의 원리를 따르며 이는 시간지역성과 공간 지역성으로 구분할 수 있다. 공간지역성 : 최근 접근한 데이터의 주변 공간에 다시 접근하는 경향 시간지역성 : 최근 접근한 데이터에 다시 접근하는 경향 오늘날 CPU 칩의 면적 30~70%는 캐시가 차지한다. 캐시 교체 정책에는 3가지 방식이 있다. FIFO(First in ..