📚 Reference
📜 Chapter
Tip
- 최적화가 필요하지 않은 코드는 갈아엎지 않기
- 우리가 작성하는 코드는 코드 자체적으로 빨라야 하지만, 더더욱 중요한 점은 다른 개발자들이 읽기 쉬워야 한다는 점이다.
- "가장 큰 문제는 개발자들이 잘못된 시점에 너무 효율적인 코드를 고민하며 시간을 낭비하고 있다는 것이다.
- "조기 최적화는 프로그래밍에서 악의 근원이다."
배열 대신 객체/맵을 사용하여 조회
- 우리는 데이터를 다룰 때, “객체 검색, 객체 다루기, 또 다른 객체 검색” 같은 상황이 자주 발생한다.
- 가장 일반적은 자바스크립트 데이터 구조는 배열이므로, 배열 안에 데이터가 저장되는 것은 지극히 정상적인 현상이다.
- 배열에서 무언가를 찾으려면
find
, indexOf
, filter
같은 메서드를 사용하여 배열의 처음부터 끝을 모두 훑어야 한다.
- 그래서 우리는 O(n)의 복잡성을 지닌 선형 검색을 사용하게 된다.
- 이는 최악의 경우, 배열의 요소 개수 만큼의 많은 비교를 수행해야 함을 의미한다.
- 작은 배열에서는 이것이 눈에 띄지 않지만, 배열의 크기가 크다면 성능에 엄청난 영향을 끼치게 된다.
- 이러한 시나리오에서는 배열을 객체나 맵으로 변환하고
key
로 검색을 하는 것이 좋다.
- 이러한 데이터 구조에서는 O(1)의 복잡성을 가지며 요소에 접근할 수 있으므로, 자료의 크기에 관계없이 항상 메모리를 한 번만 호출하게 된다.
- 객체와 맵은
해시 테이블
이라는 자료구조를 사용하기 때문이다.