[코어 자바스크립트] 데이터를 주솟값으로 저장하는 이유

소이뎁·2023년 7월 6일
0
post-thumbnail

🌈 인프런의 코어 자바스크립트(정재남) 수강 후, 이해한 내용을 정리한 글입니다.

Primitive Type과 Reference Type 모두 주솟값으로 저장된다.

아래와 같이 저장하면 변수 1개당 1칸씩만 차지하니까 더 좋지 않을까? 주솟값으로 저장하는 이유는 무엇일까?

주솟값으로 저장하면 2가지의 장점이 있다.

장점1. 비교에 비용이 들지 않는다.

var obj = {
	x: '매우 큰 용량을 차지하는 문자열!'
  	arr: ['매우 큰 용량을 차지하는 문자열!', 4]
}
obj.x === obj.arr[0] // ✅ 비교
  • 값을 직접 저장
    값을 직접 저장하는 경우, 비교를 위해 문자열 하나하나를 비교해야 한다.
  • 주솟값을 저장
    반면 주솟값을 저장하는 경우, 주솟값이 같다면 같은 값임을 바로 알 수 있다.

장점2. 메모리 낭비를 최소화할 수 있다.
만약 '대충 세어봐도 30바이트가 넘는 문자열'a개가 있다고 가정하자.

  • 값을 직접 저장
    값을 직접 저장하는 경우, 약 (30 ✖ a) byte가 필요하다.

  • 주솟값을 저장
    주솟값을 저장하는 경우, 약 (30 ➕ a) byte가 필요하다.

물론, 단점도 있다.

단점1. 데이터 할당이 느리다.

  • 값을 직접 저장
    메모리에 동일한 값이 있는지 없는지를 비교하는 과정 없이 바로 할당한다. 그러므로 데이터 할당이 빠르다.

  • 주솟값을 저장
    메로리에 동일한 값이 있는지 없는지를 할당 시마다 비교한다. 그러므로 데이터 할당이 느리다.

그럼에도 주솟값으로 저장하면, 한번 동일성을 확인한 후에는 비교 비용이 들지 않고 메모리 낭비를 줄일 수 있어 데이터 저장 시에는 주솟값으로 저장한다.

3줄 요약

  • 데이터는 주솟값으로 저장된다.
  • 장점은 비교 비용이 들지 않고, 메모리 낭비를 줄일 수 있다는 것이다.
  • 단점은 데이터 할당 시 느리다는 것이다.

0개의 댓글