본문 바로가기
프로그래밍/CS

지역성: 시간지역성과 공간지역성

by 숙님 2023. 3. 29.
728x90

알고리즘에서 항상 시간복잡도, 공간복잡도 이야기만 듣다가 

cs에서도 캐시의 시간지역성과 공간지역성이라는 개념이 있었다 

 

지역성이란 

캐시가 효율적으로 동작하기 위해서 저장할 데이터를 구분하여 저장하는 것 

마치 빠른 환승을 위해서 미리 최소 환승 구간에 서는 행동과 비슷! (공간지역성이)

 

시간 지역

데이터의 읽기/쓰기를 위해 특정 메모리가 사용됐을 때 가까운 시일 내에 해당 메모리가 다시 사용될 가능성이 높은 것 

- 예: 회사에서 핵심인재인 사람을 자주 휴일 근무자로 부름 

 

#파이썬 예제
arr = [1, 2, 3, 4, 5]
sum = 0
for i in range(len(arr)):
    sum += arr[i]
print(sum)

 

#js예제 
let arr = [1, 2, 3, 4, 5];
let sum = 0;
for (let i = 0; i < arr.length; i++) {
    sum += arr[i];
}
console.log(sum);

- 리스트(arr)의 모든 요소를 더하는 간단한 예시

- 리스트의 각 요소는 인덱스로 접근하기 때문에 이전에 접근했던 인덱스를 다시 접근할 가능성이 높음

- 최근에 접근한 인덱스에 대한 데이터가 캐시에 남아있게 되어 성능을 향상시킴

 

공간 지역

특정 데이터와 가까운 주소가 순서대로 접근되는 경우를 말함 

- 예: 회사와 가까운 곳에 사는 사람을 휴일 근무자로 부름 

 

#python 예제 
arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
sum = 0
for i in range(len(arr)):
    for j in range(len(arr[i])):
        sum += arr[i][j]
print(sum)

 

#js예제 
let arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
let sum = 0;
for (let i = 0; i < arr.length; i++) {
    for (let j = 0; j < arr[i].length; j++) {
        sum += arr[i][j];
    }
}
console.log(sum);

- 2차원 리스트(arr) 모든 요소를 더하는 간단한 예시

- 이전에 접근했던 인접 요소에 대한 데이터가 캐시에 남아있게 되어 성능을 향상시킴

댓글