반응형
자바 성능을 결정짓는 코딩 습관과 튜닝이야기 - 읽고- (4)
* 어떤 객체에 데이터를 담을 것인가?!
- Collection, Map 인터페이스를 가지는 객체들 및 성능 분석
- Collection 객체 종류 set, list, Queue
※ set
- HashSet : 데이터 순서 없이 담는다.
- TreeSet : red-black 트리에 데이터를 담는다. 값에 따라 순서 결정, 데이터를 담는 동시에 정렬함. HashSet보다 항상 느림
- LinkedHashset : 해쉬테이블에 데이터 담는다. 저장된 순서대로 순서 결정됨.
※ list
- vector : 초기화시 크기 지정 필요없는 배열.
- ArrayList : vector와 비슷하지만 초기화 되어 있지 않음.
- LinkedList : ArrayList와 비슷함, Queue 기능을 구현 했음(FIFO)
- Map 객체 종류 HashMap, TreeMap, LinkedHashMap, 그리고 원조 클래스 Hashtable
- Hashtable : 데이터를 해쉬 테이블에 담는 클래스. 내부에서 관리하는 해쉬테이블이 동기화 되어 있음
- HashMap : 데이터를 해쉬 테이블에 담는 클래스. Hashtable 다른점은 null 값을 허용하는 것이며 동기화가 되어 있지 않음
- TreeMap : red-black 트리에 데이터를 담음. TreeSet과의 차이점은 키에 의해서 순서가 정해짐.
- LinkedHashMap : HashMap과 거의 동일 이중연결리스트로 데이터를 담는다.
- Queue 객체 종류는 LinkedList,PriorityQueue 목적의 큐 클래스, 컨커런트 큐 클래스가 있으며
- PriorityQueue : 추에 추가된 순서와 관계없이 먼저 생성된 객체가 먼저 나가도록함.
- 다른 큐 종류 : LinkedBlockingQueue, ArrayBlockingQueue, PriorityBlockingQueue, DelayQueue, SyncronousQueue
⊙ set 객체의 속도 비교 : linkedHashSet (1.06ms) > HashSet > TreeSet
⊙ list 객체의 속도 비교 : Vector (0.12ms) > LinkedList > ArrayList
⊙ map 객체의 속도 비교 : LinkedHashMap(2.24ms) > Hashtable(2.29ms) > HashMap > TreeMap
각 저장 객체들중에서 LinkedHashSet, Vector, Hashtable이 속도가 가장 빠르다.
※ 참고사항 : 최근에 개발중에 웹프로그램에서는 10,000 이상의 데이터를 저장하는 경우가 특별히 없기때문에 어떤 종류를 사용하든 큰 차이점을 가지지는 않는다.
- Collection, Map 인터페이스를 가지는 객체들 및 성능 분석
- Collection 객체 종류 set, list, Queue
※ set
- HashSet : 데이터 순서 없이 담는다.
- TreeSet : red-black 트리에 데이터를 담는다. 값에 따라 순서 결정, 데이터를 담는 동시에 정렬함. HashSet보다 항상 느림
- LinkedHashset : 해쉬테이블에 데이터 담는다. 저장된 순서대로 순서 결정됨.
※ list
- vector : 초기화시 크기 지정 필요없는 배열.
- ArrayList : vector와 비슷하지만 초기화 되어 있지 않음.
- LinkedList : ArrayList와 비슷함, Queue 기능을 구현 했음(FIFO)
- Map 객체 종류 HashMap, TreeMap, LinkedHashMap, 그리고 원조 클래스 Hashtable
- Hashtable : 데이터를 해쉬 테이블에 담는 클래스. 내부에서 관리하는 해쉬테이블이 동기화 되어 있음
- HashMap : 데이터를 해쉬 테이블에 담는 클래스. Hashtable 다른점은 null 값을 허용하는 것이며 동기화가 되어 있지 않음
- TreeMap : red-black 트리에 데이터를 담음. TreeSet과의 차이점은 키에 의해서 순서가 정해짐.
- LinkedHashMap : HashMap과 거의 동일 이중연결리스트로 데이터를 담는다.
- Queue 객체 종류는 LinkedList,PriorityQueue 목적의 큐 클래스, 컨커런트 큐 클래스가 있으며
- PriorityQueue : 추에 추가된 순서와 관계없이 먼저 생성된 객체가 먼저 나가도록함.
- 다른 큐 종류 : LinkedBlockingQueue, ArrayBlockingQueue, PriorityBlockingQueue, DelayQueue, SyncronousQueue
⊙ set 객체의 속도 비교 : linkedHashSet (1.06ms) > HashSet > TreeSet
⊙ list 객체의 속도 비교 : Vector (0.12ms) > LinkedList > ArrayList
⊙ map 객체의 속도 비교 : LinkedHashMap(2.24ms) > Hashtable(2.29ms) > HashMap > TreeMap
각 저장 객체들중에서 LinkedHashSet, Vector, Hashtable이 속도가 가장 빠르다.
※ 참고사항 : 최근에 개발중에 웹프로그램에서는 10,000 이상의 데이터를 저장하는 경우가 특별히 없기때문에 어떤 종류를 사용하든 큰 차이점을 가지지는 않는다.
반응형
LIST