성능의 관점은 3가지 정도로 나눠야 합니다.
- 저장시간(insert time)
- 검색시간(seek time)
- 읽는 시간(read time)
각 컬렉션 클래스들은 위의 관점에 대해서 장단점을 가지고 있습니다.
Hash계열(Hashtable, HashMap)이 검색에서는 제일 빠릅니다.
대신 저장시간은 제일 오래걸립니다.(전화번호부와 같이 검색이 중요한 곳에서는 유리하고,
증권시스템같이 동시에 많은 수의 데이터를 처리해야하는 경우에는 불리하겠죠.)
TreeMap과 같은 Sorted계열은 저장시간은 Hash계열보다 빠르고, 검색시간은 Hash계열보다 조금 느린
저장과 검색에 균형잡힌 성능을 제공합니다.
TreeMap은 정렬된 상태로 데이터를 저장하기 때문에, 범위검색(Range Search)기능을 제공합니다.
검색없이 데이터를 저장하고, 읽어오는 거라면 역시 Vector와 ArrayList가 좋겠지요.
더 최적화가 필요하다면 원초적인 Object배열을 직접 만들어서 구현해야하고요.
그러나 Vector와 ArrayList는 이미 최적화 되어 있기 성능이 매우 좋습니다.
읽는 시간은 큰 차이 없이 비슷합니다만 아무래도 배열, ArrayList가 조금더 빠르겠지요.
동기화, 저장시간, 검색시간이 어떤 컬렉션을 선택해서 사용할 것인지 결정하는 주요요소입니다.
각 컬렉션 클래스의 특징을 알고 그에 맞는 것을 선택해서 쓰면 됩니다.
'JAVA' 카테고리의 다른 글
[java] package 와 import에 대한 설명 (0) | 2010.04.23 |
---|---|
[JAVA] 자바 코드 튜닝 가이드 (0) | 2010.04.12 |
[JAVA] Vector->ArrayList, Hashtable -> HashMap (0) | 2010.04.12 |
[JAVA] Hashtable, HashMap이란? (0) | 2010.04.12 |
[JAVA] 유니코드 인코딩&디코딩 (0) | 2010.04.12 |