2017-11-21 10 views
0

타이프 스크립트 웹 응용 프로그램에서 처리하기 위해 서버 측 데이터베이스의 일부를 복제하려고합니다. typescript 내에서 정수 ID로 다양한 레코드에 액세스해야합니다. 내가 보는 한가지 문제점은 인덱스가 연속적이지 않을 수도 있고, 0으로 시작하지 않을 수도 있다는 것입니다 (실제로 데이터베이스의 일부가 삭제 된 경우 0보다 훨씬 큰 값으로 시작할 수 있습니다).Typescript 배열은 빈 인덱스에 메모리를 할당합니까?

주어진 다음의 코드 : 날 리드

(12) [empty × 10, 1, 2] 

내가 12 개 값을 메모리를 할당 한 것으로 믿고 있지만 사용하고 있습니다 :

let a: Array<number> = new Array<number>(); 
a[10] = 1; 
a[11] = 2; 

내가 크롬에 검사하면 나는 참조 마지막 2. 작은 시작 색인에서는 큰 문제가 아니지만, 수백만에 첫 번째 색인이 있고 배열에서 더 큰 개체를 사용하는 경우 중요한 메모리 문제가 될 수 있습니다.

메모리가 사용되지 않는 색인에 대해서도 할당되었다고 가정 할 때 맞습니까? 그렇다면 비 연속적인 색인을 허용하는 더 나은 컨테이너는 무엇이 될까요?

답변

1

이것은 JavaScript 런타임의 구현에 따라 다르지만 일반적으로 스파 스 어레이는 실제로 사용중인 요소에 대해서만 메모리를 할당합니다.

제 생각에 Chrome은 예를 들어 희소 배열을 내부적으로 사전으로 저장하므로 스파 스 배열과 전체 배열간에 서로 다른 성능 특성이 나타날 수 있습니다.