Javascript 배열과 오브젝트의 성능 평가

fgStudy·2022년 3월 23일
0
post-thumbnail

【글로벌 Best】 JavaScript 알고리즘 & 자료구조 마스터클래스

해당 포스팅은 Udemy의 Javascript 알고리즘 & 자료구조 마스터 클래스 인강을 정리한 것입니다.


Object


1. 언제 Object를 사용하는가?

  • oreder가 필요없을 때

  • access / insertion / removal을 빠르게 하고 싶을 때


2. Object의 Big O

  • Insertion: O(1)

  • Removal: O(1)

  • Searching: O(N)

  • Access: O(1)


3. Object 메소드의 Big O

  • Object.keys: O(N)
    : Object 프로퍼티 키를 배열로 반환

  • Object.values: O(N)
    : Object 프로퍼티 값을 배열로 반환

  • Object.entries: O(N)
    : Object의 프로퍼티 [key, value] 쌍의 배열을 반환

  • hasOwnProperty: O(1)
    : Object가 특정 프로퍼티를 가지고 있는지를 나타내는 불리언 값을 리턴
    : 해당 프로퍼티만을 조회하므로 O(1)

Object 정리

  • Object는 index가 없어 search하는 데 오래 걸린다.
  • index가 필요 없는 작업, 즉 ordering 할 필요가 없다면 object를 이용하자!


Array


1. 언제 Array를 사용하는가?

  • oreder가 필요할 때
  • access / insertion / removal을 빠르게 하고 싶을 때

2. Array의 Big O

  • Insertion - It depends position
    : 배열의 맨 끝에 삽입 - O(1)
    : 맨 앞에 삽입 - 엘레먼트의 인덱스를 다시 배정해야 하므로 O(N)

  • Removal - It depends position
    : 배열의 맨 끝 엘레먼트를 삭제 - O(1)
    : 배열의 맨 앞 엘레먼트를 삭제 - 엘레먼트의 인덱스를 다시 배정해야 하므로 O(N)

  • Searching - O(N)
    : 데이터가 찾고자 하는 데이터인지 하나씩 판별 - O(N)

  • Access - O(1)
    : index를 통해 해당 데이터로 바로 접근 가능하기에 O(1)


3. Array 메소드의 Big O

  • push: O(1)
  • pop: O(1)
  • shift: O(N)
  • unshift: O(N)
  • concat: O(N)
  • slice: O(N)
  • splice: O(N)
  • sort: O(N * log N)
  • forEach/map/filter/reduce/etc. : O(N)
profile
지식은 누가 origin인지 중요하지 않다.

0개의 댓글