TIL

Chapter 05. 마이크로벤치마킹과 통계

5.1 자바 성능 측정 기초

100,000개 숫자 정렬하는 벤치마크 코드 예제

public class ClassicSort {

	private static final int N = 1000;
	private static final int I = 150000;
	private static final List<Integer> testData = new ArrayList<>();

	public static void main(String[] args) {
		Random randomGenerator = new Random();
		for (int i = 0; i < N; i++) {
			testData.add(randomGenerator.nextInt(Integer.MAX_VALUE));
		}

		double startTime = System.nanoTime();
		
		for (int i = 0; i < I; i++) {
			List<Integer> copy = new ArrayList<>(testData)
			Collections.sort(copy);
		}

		double endTime = System.nanoTime();
		double timePerOperation = ((endTime - startTime) / (1000000000L * I));
		System.out.pringln("결과: " + (1 / timePerOperation) + " op/s");
	}
}

5.2 JMH 소개

5.2.1 될 수 있으면 마이크로벤치마크하지 말지어다

5.2.2 휴리스틱: 마이크로벤치마킹은 언제 하나?

5.2.3 JMH 프레임워크

JMH는 자바를 비롯해 JVM을 타깃으로 하는 언어로 작성된 나노/마이크로/밀리/매크로 벤치마크를 제작, 실행, 분석하는 자바 도구다.

5.2.4 벤치마크 실행

5.3 JVM 성능 통계

모든 측정은 오차를 수반하며 자바 성능 분석 시 흔히 맞딱뜨리는 주요 오차 유형이 있다.

5.3.1 오차 유형

5.3.2 비정규 통계학

자바 성능에서 특이점은 곧 느린 트랜잭션과 짜증난 고객

5.4 통계치 해석