관리 메뉴

sleepyotter

캐시 이론 본문

프로그래밍/C# 게임서버

캐시 이론

sleepyotter. 2021. 9. 7. 19:38

캐시 철학

Temporal Locality

- 시간적으로 보면, 방금 사용된 데이터는 또 사용될 가능성이 높다. 이를 캐시에 저장해놓으면 효율이 증가하지 않을까? 하고 캐시에 기록해 둔다.

Spacial Locality

- 공간적으로 보면, 방금 사용된 데이터 근처의 데이터도 사용될 가능성이 높다. 이 녀석들도 같이 저장해놓으면 효율이 증가하지 않을까? 하고 캐시에 기록해 둔다.

예들 들어, 2차원 배열에서 [x][y] 와 같이 변수 접근을 한다고 했을때,

for(x)
{
    for(y)
    {
    	arr[y,x]
        arr[x,y]
    }
}

전자의 경우는 선언한 행의 개수만큼 점프하면서 값을 찾아야 하고

후자의 경우는 바로 옆 메모리 주소 값을 변경하고 있다.

실행시켜보면 후자가 압도적으로 빠르다.

이 경우에는 Spatial Locality를 활용하지 못하기 때문에 속도차이가 나고 있다. (내 CPU에 캐시가 있고 잘 작동한다는 증거)

'프로그래밍 > C# 게임서버' 카테고리의 다른 글

Interlocked  (0) 2021.09.07
메모리 배리어  (0) 2021.09.07
컴파일러 최적화  (0) 2021.09.07
Thread 생성  (0) 2021.09.07
개요  (0) 2021.09.07