태그: 캐시
4편
-
C++ 캐시 교체 알고리즘: FIFO·LRU·LFU·Clock·MRU·OPT 구현과 비교
FIFO·LRU·LFU·MRU·Random·Clock·OPT 캐시 교체 정책의 동작 원리와 시간 복잡도를 비교하고, FIFO·LRU·Clock 캐시를 C++로 구현한 뒤 Redis 정책, OS 페이지 교체, CDN의 LFU 변형과 연결해 설명합니다.
-
C++로 O(1) LRU 캐시 만들기: unordered_map + list, splice, 흔한 반복자 실수
unordered_map에 list 반복자를 저장하고 splice로 노드를 앞으로 옮겨 get과 put을 모두 O(1)로 처리하는 LRU 캐시를 C++ 템플릿으로 구현합니다. 용량 초과 시 eviction 순서와 용량 0 같은 경계 조건도 다룹니다.
-
C++ 캐시 효율적인 코드: 데이터 지향 설계 가이드
데이터 지향 설계와 캐시 라인 정렬·패딩으로 메모리 접근 비용을 줄이는 방법을 다룹니다. AoS와 SoA의 차이, 거짓 공유를 alignas로 없애는 법, perf로 캐시 미스를 확인하는 법, SoA로 바꿀 때 생기는 인덱스 불일치 같은 실수를 예제로 설명합니다.
-
C++ 캐시 히트(Cache Hit)를 높이는 메모리 정렬과 패딩 | False Sharing 해결
스레드를 늘렸는데 오히려 느려지는 원인인 false sharing을 캐시 라인 구조로 설명하고, alignas로 카운터를 캐시 라인 단위로 분리하는 방법을 보여줍니다. 구조체 패딩이 sizeof를 키우는 이유, 멤버 순서 최적화, AoS와 SoA 비교도 다룹니다.