배열과 오브젝트의 성능 평가
August 7, 2022
JavaScript 알고리즘 & 자료구조 마스터 클래스 강의를 듣고 작성하는 강의노트
배열과 오브젝트의 성능 평가
객체 (Objects)
객체는 순서가 없고, key와 value를 사용해 속도가 빠르다.
- 삽입(Insertion) = O(1)
- 삭제(Removal) = O(1)
- 검색(Searching) = O(N)
- 접근(Access) = O(1)
객체 메소드의 Big O
Object.keys
= O(N)Object.values
= O(N)Object.entries
= O(N)hasOwnProperty
= O(1)
let instructor = {
firstName: 'Kelly',
isInstructor: true,
favoriteNumbres: [1, 2, 3, 4],
};
console.log(Object.keys(instructor));
// output: ['firstName', 'isInstructor', 'favoriteNumbres']
console.log(Object.values(instructor));
// output: ['Kelly', true, Array(4)]
console.log(Object.entries(instructor));
/* output: [
['firstName', 'Kelly'],
['isInstructor', true],
['favoriteNumbres', Array(4)]
] */
console.log(instructor.hasOwnProperty('firstName'));
// output: true
배열 (Array)
- 객체와 다르게 정렬되어 있는 자료구조이다.
- 정렬되어있는 데이터가 위해 사용한다.
- 빠른 접근이 가능하다.
- 삭제(Searching) = O(N)
- 접근(Access) = O(1)
배열 메소드의 Big O
Array.push
= O(1)- 배열의 끝에 삽입하는 것으로 인덱스에 영향을 주지 않아 상수로 표현한다.
Array.pop
= O(1)- 배열의 마지막 요소를 제거하는 것으로 인덱스에 영향을 주지 않아 상수로 표현한다.
Array.shift
= O(N)Array.unshift
= O(N)Array.concat
= O(N)Array.slice
= O(N)Array.sort
= O(N * logN)Array.forEach/map/filter/reduce/etc
= O(N)