더북(TheBook)

여기서 궁금한 점이 하나 생깁니다. 캐시 히트가 좋다는 건 알겠는데 캐시 히트가 일어나려면 요청한 데이터들이 인접한 메모리 공간에 있어야 합니다. 프로그램이 실행되면서 필요한 데이터가 모여 있을 확률이 과연 얼마나 될까요? 데이터가 서로 멀리 떨어져 있다면 캐시는 무용지물이 됩니다. 이 물음에 답하려면 지역성(locality)이 무엇인지 알아야 합니다.

지역성의 원리(principle of locality)란 개념이 있습니다. 데이터 접근이 같은 메모리 공간이나 인접한 메모리 공간에서 자주 일어난다는 의미입니다. 지역성에는 시간적 지역성과 공간적 지역성이 있습니다. 시간적 지역성(temporal locality)은 특정 데이터에 한 번 접근했을 때 곧 다시 그 데이터에 접근할 가능성이 높다는 말입니다. 공간적 지역성(spatial locality)은 이번에 접근할 데이터는 이전에 접근했던 데이터의 근처에 있을 확률이 높다는 말입니다. 코드를 보면서 시간적 지역성과 공간적 지역성의 예를 살펴봅시다.

>>> li = [1, 2, 3, 4, 5]

>>> res = 0

>>> for e in li:

        res += e       #1

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.