Post

자바 성능 튜닝 이야기 3주차

자바 성능 튜닝 이야기 3주차

들어가며

이 포스트는 이상민의 「자바 성능 튜닝 이야기」 Chpater4 ~ 5을 읽고 개인적으로 학습한 내용을 정리한 글입니다.

  • 책: 자바 성능 튜닝 이야기
  • 저자: 이상민
  • 출판사: 인사이트
  • 챕터: Chapter4 ~ Chapter 5

핵심 내용 정리

4장 어디에 담아야 하는지

Set 클래스 중 무엇이 가장 빠를까?

  • HashSet, TreeSet, LinkedHashSet 비교
  • 데이터 추가 비교
대상평균 응답 시간(ms)
HashSet375
TreeSet1.249
LinkedHashSet378
  • 데이터 조회 비교
대상평균 응답 시간(ms)
HashSet26
TreeSet35
LinkedHashSet16
  • 비순차적 데이터 조회
대상평균 응답 시간(ms)
HashSet32
TreeSet841
LinkedHashSet32
  • TreeSet
    • 데이터를 순서에 따라 탐색하는 작업이 필요하면 TreeSet을 사용
    • 순서가 필요없는 경우는 HashSet, LinkedHashSet 사용을 권장

List 관련 클래스 중 무엇이 빠를까?

  • ArrayList, Vector, LinkedList 비교
  • 데이터를 추가 비교
대상평균 응답 시간(ms)
ArrayList28
Vector31
LinkedList40
  • 데이터를 가져오는 경우
대상평균 응답 시간(ms)
ArrayList28
Vector31
LinkedList40
  • 데이터 조회 비교
대상평균 응답 시간(ms)
ArrayList4
Vector105
LinkedList1.512
  • Vector와 ArrayList의 시간차가 발생하는 이유
    • Vector는 synchronized가 걸려있음
  • 데이터 삭제 비교
대상평균 응답 시간(ms)
ArrayListFirst418
ArrayListLast146
VectorFirst687
VectorLast426
LinkedListFirst423
LinkedListLast407

Map 관련 클래스 중에서 무엇이 빠를까?

대상평균 응답 시간(ms)
SeqHashMap32
RandomHashMap40
SeqHashtable106
RandomHashtable120
SeqLinkedHashMap34
RandomLinkedHashMap46
SeqTreeMap197
RandomTreeMap277

보편적 권장 사항

인터페이스클래스
SetHashSet
ListArrayList
MapHashMap
QueueLinkedList

Collection 관련 클래스의 동기화

  • 동기화된 클래스와 아닌 클래스
    • 비동기화된 클래스 : HashSet, TreeSet, LinkedHashSet, ArrayList, LinkedList, HashMap, TreeMap, LinkedHashMap
    • 동기화 클래스 : Vector, Hashtable

5장 지금까지 사용하던 for 루프를 더 빠르게 할 수 있다고?

조건문에서의 속도는?

  • if-else
  • switch
대상응답 시간(ms)
randomOnly0.46
if 10개5
if 100개63
  • if문과 switch 문 사이에 차이는 별로 없음

반복 구문에서의 속도는?

  • for
  • do-while
  • while
대상응답 시간(ms)
for410
for 크기 반복 비교413
for-each481

블러 효과

This post is licensed under CC BY 4.0 by the author.