https://www.voidcanvas.com/javascript-array-evolution-performance/
이곳을 참고하여 작성하였다.
우선 배열은 연속적인 메모리 로케이션들의 묶음을 사용하여 값을 저장한다. 여기서 기억 해야할 점은 연속성
과 인접성
이다.
이 그림은 배열의 메모리 상태의 예시다.
이 배열은 4 bit로 이루어진 4개의 블록을 가지고 있다. 따라서 총 16 bit의 메모리 블록을 사용한다.
만약 이 상태에서 a[2]의 메모리 주소를 찾고자 한다면 아래와 같이 간단하게 계산 할 수 있다.
1201 + (2*4) = 1029
반면, JS의 배열은 연결 리스트
다.
따라서 위의 예시와는 다르게, 무조건 1201
부터 탐색하며 a[2]
를 찾아가야한다.
반면, 현대의 JS는 모든 요소가 동일한 타입을 가지고 있는 배열인 경우, 연속적으로 메모리를 할당한다.
또한, 강제로 인접 메모리 블록에 저장 할 수 있다고 한다.
자세한 것은 아래의 링크 참고.
MDN-Typed_arrays