🌈 인프런의
코어 자바스크립트(정재남)
수강 후, 이해한 내용을 정리한 글입니다.
아래와 같이 저장하면 변수 1개당 1칸씩만 차지하니까 더 좋지 않을까? 주솟값으로 저장하는 이유는 무엇일까?
장점1. 비교에 비용이 들지 않는다.
var obj = {
x: '매우 큰 용량을 차지하는 문자열!'
arr: ['매우 큰 용량을 차지하는 문자열!', 4]
}
obj.x === obj.arr[0] // ✅ 비교
장점2. 메모리 낭비를 최소화할 수 있다.
만약 '대충 세어봐도 30바이트가 넘는 문자열'
이 a개
가 있다고 가정하자.
값을 직접 저장
값을 직접 저장하는 경우, 약 (30 ✖ a) byte
가 필요하다.
주솟값을 저장
주솟값을 저장하는 경우, 약 (30 ➕ a) byte
가 필요하다.
단점1. 데이터 할당이 느리다.
값을 직접 저장
메모리에 동일한 값이 있는지 없는지를 비교하는 과정 없이 바로 할당한다. 그러므로 데이터 할당이 빠르다.
주솟값을 저장
메로리에 동일한 값이 있는지 없는지를 할당 시마다 비교한다. 그러므로 데이터 할당이 느리다.
그럼에도 주솟값으로 저장하면, 한번 동일성을 확인한 후에는 비교 비용이 들지 않고
메모리 낭비를 줄일 수 있어
데이터 저장 시에는 주솟값으로 저장한다.