1. var, let, const 차이
var
- var는 오래된 변수 선언 키워드로 함수 스코프를 가진다.
- 이는 변수가 선언된 함수 내에서만 유효하다는 의미이다.
- 같은 이름의 변수를 여러 번 선언해도 오류가 발생하지 않는다.
- 이 때 변수 값은 가장 최근의 선언으로 덮어 쓰이게 된다.
- var 변수는 호이스팅에 영향을 받아 변수 선언을 해당 스코프의 최상단으로 끌어올린다.
let
- let은 ES6에서 등장한 변수 키워드로 블록 스코프를 가지며, 중괄호 내에서만 유효하다.
- 이는 해당 블록 외부에서는 변수에 접근할 수 없음을 의미한다.
- 같은 이름의 변수를 중복해서 선언하면 에러가 발생하며 한 스코프 내에서 동일한 이름의 변수를 재선언 할 수 없다.
const
- const도 ES6에서 도입된 변수 선언 키워드로 블록 스코프를 가진다.
- 한 번 할당된 값은 변경할 수 없으나 const로 선언된 객체나 배열의 내용은 변경할 수 있다.
- 즉 객체나 배열 자체는 변경할 수 없지만 내부 속성이나 요소는 수정될 수 있다.
2. 캐시
캐시란?
- 데이터를 미리 복사해 놓은 임시 저장소이다.
- 빠른 장치와 느린 장치에서 속도 차이에 따른 병목 현상을 줄이기 위한 메모리이다.
- 데이터 접근에 오래 걸리는 경우를 해결하고 다시 계산하는 시간을 절약한다.
- 즉, 캐시는 계층과 계층 사이에서 속도 차이를 해결하기 위한 임시 저장소이다.
지역성이란? 자주 사용되는 데이터의 특성을 의미한다. 캐시를 직접 설정할 때는 자주 사용되는 데이터를 기반으로 설정해야 하며 이러한 특성을 지역성이라고 한다.
- 시간 지역성: 최근 사용한 데이터에 다시 접근하려는 특성이다.
- 공간 지역성: 최근 접근한 데이터를 이루고 있는 공간이나 그 가까운 공간에 접근하는 특성이다.
3. 캐시히트와 캐시미스
캐시히트
- 캐시히트란 캐시에 원하는 데이터를 찾는 것이다.
- 위치도 가깝고 CPU 내부버스를 기반으로 작동하여 빠르다.
- 캐시히트를 하게 되면 해당 데이터를 제어장치를 거쳐 가져오게 된다.
캐시미스
- 캐시미스란 해당 데이터가 캐시에 없다면 주메모리로 가서 데이터를 찾아오는 것이다.
- 메모리를 가져올 때 시스템 버스를 기반으로 작동하기 때문에 느리다.