• 빅오와 성능 관점에서의 객체

    2022. 12. 23.

    by. JJo 😊

    Object

    객체는 정렬되어 있지 않은 데이터 구조이다. 모두 key와 value값이 짝을 이뤄 저장되어 있다.

    객체는 언제 사용하나?

    • 데이터가 정렬되어 있을 필요가 없을 때
    • 빠른 접근, 입력, 제거를 원할 때 (입력, 제거, 접근하는 시간이 상수 시간이다. 탐색은 선형 시간이다.)

    👉 Insertion = O(1)

    👉 Removal = O(1)

    👉 Searching = O(n)

    👉 Access = O(1)

    빅오 표기법 관점에서의 객체 메서드

    👉 Object.keys = O(n)

    👉 Object.values = O(n)

    👉 Object.entries = O(n)

    👉 hasOwnProperty = O(1)

    Array

    배열은 정렬되어 있는 데이터 구조이다.

    배열은 언제 사용하나?

    • 데이터가 정렬되어야 할 때
    • 빠른 접근, 입력, 제거를 원할 때

    👉 Insertion = It depends…

    👉 Removal = It depends…

    👉 Searching = O(n)

    👉 Access = O(1)

    빅오 표기법 관점에서의 배열 메서드

    배열 앞에 데이터를 추가하고 제거하면, 인덱스를 다시 설정해야 하기 때문에 비효율적이다.
    push()pop() 작업이 shift()unshift()보다 빠르다. (빈 배열일 때 제외)

     

    👉 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)

     


    객체나 배열을 다룰 때, 그냥 무턱대고 썼는데.. 메서드마다 성능의 차이가 있다는 거에 놀랐다!😮

    메서드를 편하다고 무작정 쓰기 보단 성능도 고려해보는 습관을 들여야 할 것 같다!

    728x90

    댓글