자바 성능 튜닝 이야기 3주차
자바 성능 튜닝 이야기 3주차
들어가며
이 포스트는 이상민의 「자바 성능 튜닝 이야기」 Chpater4 ~ 5을 읽고 개인적으로 학습한 내용을 정리한 글입니다.
- 책: 자바 성능 튜닝 이야기
- 저자: 이상민
- 출판사: 인사이트
- 챕터: Chapter4 ~ Chapter 5
핵심 내용 정리
4장 어디에 담아야 하는지
Set 클래스 중 무엇이 가장 빠를까?
- HashSet, TreeSet, LinkedHashSet 비교
- 데이터 추가 비교
| 대상 | 평균 응답 시간(ms) |
|---|---|
| HashSet | 375 |
| TreeSet | 1.249 |
| LinkedHashSet | 378 |
- 데이터 조회 비교
| 대상 | 평균 응답 시간(ms) |
|---|---|
| HashSet | 26 |
| TreeSet | 35 |
| LinkedHashSet | 16 |
- 비순차적 데이터 조회
| 대상 | 평균 응답 시간(ms) |
|---|---|
| HashSet | 32 |
| TreeSet | 841 |
| LinkedHashSet | 32 |
- TreeSet
- 데이터를 순서에 따라 탐색하는 작업이 필요하면 TreeSet을 사용
- 순서가 필요없는 경우는 HashSet, LinkedHashSet 사용을 권장
List 관련 클래스 중 무엇이 빠를까?
- ArrayList, Vector, LinkedList 비교
- 데이터를 추가 비교
| 대상 | 평균 응답 시간(ms) |
|---|---|
| ArrayList | 28 |
| Vector | 31 |
| LinkedList | 40 |
- 데이터를 가져오는 경우
| 대상 | 평균 응답 시간(ms) |
|---|---|
| ArrayList | 28 |
| Vector | 31 |
| LinkedList | 40 |
- 데이터 조회 비교
| 대상 | 평균 응답 시간(ms) |
|---|---|
| ArrayList | 4 |
| Vector | 105 |
| LinkedList | 1.512 |
- Vector와 ArrayList의 시간차가 발생하는 이유
- Vector는 synchronized가 걸려있음
- 데이터 삭제 비교
| 대상 | 평균 응답 시간(ms) |
|---|---|
| ArrayListFirst | 418 |
| ArrayListLast | 146 |
| VectorFirst | 687 |
| VectorLast | 426 |
| LinkedListFirst | 423 |
| LinkedListLast | 407 |
Map 관련 클래스 중에서 무엇이 빠를까?
| 대상 | 평균 응답 시간(ms) |
|---|---|
| SeqHashMap | 32 |
| RandomHashMap | 40 |
| SeqHashtable | 106 |
| RandomHashtable | 120 |
| SeqLinkedHashMap | 34 |
| RandomLinkedHashMap | 46 |
| SeqTreeMap | 197 |
| RandomTreeMap | 277 |
보편적 권장 사항
| 인터페이스 | 클래스 |
|---|---|
| Set | HashSet |
| List | ArrayList |
| Map | HashMap |
| Queue | LinkedList |
Collection 관련 클래스의 동기화
- 동기화된 클래스와 아닌 클래스
- 비동기화된 클래스 : HashSet, TreeSet, LinkedHashSet, ArrayList, LinkedList, HashMap, TreeMap, LinkedHashMap
- 동기화 클래스 : Vector, Hashtable
5장 지금까지 사용하던 for 루프를 더 빠르게 할 수 있다고?
조건문에서의 속도는?
- if-else
- switch
| 대상 | 응답 시간(ms) |
|---|---|
| randomOnly | 0.46 |
| if 10개 | 5 |
| if 100개 | 63 |
- if문과 switch 문 사이에 차이는 별로 없음
반복 구문에서의 속도는?
- for
- do-while
- while
| 대상 | 응답 시간(ms) |
|---|---|
| for | 410 |
| for 크기 반복 비교 | 413 |
| for-each | 481 |
블러 효과
This post is licensed under CC BY 4.0 by the author.