JavaScript Map vs Object: 성능과 사용법
반응형
자바스크립트의 Map과 Object의 특징과 성능 차이를 종합적으로 살펴보겠습니다:
Map의 기본 특징
키-값 저장소
- 모든 데이터 타입을 키로 사용 가능 (객체도 가능)
- 삽입 순서가 보장됨
- size 속성으로 크기 확인 가능
제공 메서드
- set(): 값 추가/수정
- get(): 값 조회
- delete(): 값 삭제
- has(): 키 존재 여부 확인
Map 사용법
Map 생성하기
// 빈 Map 생성
const myMap = new Map();
// 초기값과 함께 생성
const myMap2 = new Map([
['key1', 'value1'],
['key2', 'value2']
]);
Map 조작하기
const myMap = new Map();
// 값 추가
myMap.set('name', 'John');
// 값 조회
console.log(myMap.get('name')); // 'John'
// 키 존재 확인
console.log(myMap.has('name')); // true
// 값 삭제
myMap.delete('name');
// 전체 삭제
myMap.clear();
Map 순회하기
const myMap = new Map([['a', 1], ['b', 2]]);
// for...of 사용
for (let [key, value] of myMap) {
console.log(key, value);
}
// forEach 사용
myMap.forEach((value, key) => {
console.log(key, value);
});
// 키만 순회
for (let key of myMap.keys()) {
console.log(key);
}
// 값만 순회
for (let value of myMap.values()) {
console.log(value);
}
내부 구현의 최적화
해시맵 특화 설계
- Map은 동적인 키-값 쌍의 빈번한 추가/삭제를 위해 특별히 설계되었습니다
- Object는 프로토타입 체인과 상속 구조로 인한 오버헤드가 있습니다
VM 최적화 차이
- JavaScript 엔진은 Object를 shape assumption(형태 가정)으로 최적화하려 합니다
- Map은 동적으로 변하는 해시맵 용도로 설계되어 이러한 제약이 없습니다
성능 특성
작업별 성능 비교
- 삽입 작업: Map이 Object보다 최대 45.8배 더 빠름
- 삭제 작업: Map이 Object보다 31배 더 빠름
- 검색 작업: Map이 Object보다 2.6배 더 빠름
예외 케이스
- 문자열 키를 사용하는 읽기 중심 작업에서는 Object가 더 나은 성능을 보임
- 작은 정수를 키로 사용할 때는 Object가 더 효율적
메모리 효율성
- Map은 동일한 크기의 Object보다 메모리 사용량이 적음
- 특히 큰 데이터셋에서 메모리 효율성이 더욱 두드러짐
브라우저 지원
- 2017년 6월 이후 모든 최신 브라우저 지원
- Internet Explorer 미지원
반응형
'개발' 카테고리의 다른 글
Node.js 생태계의 모듈 시스템 진화 (0) | 2024.11.25 |
---|---|
Windsurf Editor: AI 기반 차세대 개발 환경 소개 (0) | 2024.11.22 |
n8n 워크플로우 노드 가이드 (1) | 2024.11.20 |
Traefik: 클라우드 네이티브 시대의 현대적인 리버스 프록시 (1) | 2024.11.20 |