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)의 모든 요소를 더하는 간단한 예시
- 이전에 접근했던 인접 요소에 대한 데이터가 캐시에 남아있게 되어 성능을 향상시킴
'프로그래밍 > CS' 카테고리의 다른 글
CS스터디 5주차 - 알고리즘 (0) | 2023.04.06 |
---|---|
CS스터디 4주차 - 자료구조 (0) | 2023.03.31 |
CS스터디 3주차 - 페이징 메모리 (0) | 2023.03.24 |
CS스터디 2주차 - 인터럽트 데드락 (0) | 2023.03.17 |
CS스터디 1주차 - 프로세스 (1) | 2023.03.16 |
댓글