C++ 쟁이가 C#을 배워보자 - SortedList? SortedDictionary?

이번 포스트는 이전 두 포스트에서 다뤘던 SortedList와 SortedDictionary에 대해 비교해 보고자 한다.

사실 두 컬렉션을 보면 사용법도 거의 동일하고, key 기준으로 정렬된 데이터를 관리한다는 점에 있어서 기능상 크게 다른것이 없어 보인다. 그럼에도 C#에서는 왜 이 두가지가 나뉘어 있을까?
간략하게 두 컬렉션의 같은점과 다른점을 살펴보면 다음과 같다.

같은점

두 컬렉션 모두 탐색 시 O(log n)의 시간 복잡도를 가진다.

다른점

  1. 메모리 사용량 (SortedList < SortedDictionary)
  2. 삽입/삭제 시 시간 복잡도 (SortedList O(n) > SortedDictionary O(log n))
  3. 이미 정렬된 데이터로부터 한번에 컬렉션 데이터가 채워진다면 SortedList가 SortedDictionary보다 빠름
  4. SortedList는 Keys / Values 멤버를 인덱스로 접근이 가능함 - 이 멤버들을 접근하는데 리스트를 재생성하지 않음. 내부 배열로 로 key와 value를 관리하고 있기 때문.

위의 다른점 네가지를 고려하여 개발시 상황에 맞는 컬렉션을 사용하면 된다.

메모리 사용량에 신경쓰지 않고 삽입/삭제시 성능이 좋은것을 원하면 SortedDictionary,
혹은 데이터 생성을 DB 등에서 이미 정렬된 형태로 한번에 하고 삽입/삭제가 적은 경우에는 SortedList를 사용하면 되겠다.

댓글

가장 많이 본 글