JAVA · 테스트
성능 테스트 (JMH)
Java Microbenchmark Harness로 정확한 성능 측정을 수행합니다.
테스트고급JMH벤치마크성능테스트Microbenchmark
핵심 설명
Java Microbenchmark Harness로 정확한 성능 측정을 수행합니다.
Java code
// JMH 의존성: org.openjdk.jmh:jmh-core:1.37
// import org.openjdk.jmh.annotations.*;
// import java.util.concurrent.TimeUnit;
// @BenchmarkMode(Mode.AverageTime)
// @OutputTimeUnit(TimeUnit.NANOSECONDS)
// @Warmup(iterations = 3, time = 1)
// @Measurement(iterations = 5, time = 1)
// @Fork(1)
// @State(Scope.Benchmark)
// public class StringBenchmark {
//
// @Param({"10", "100", "1000"})
// int size;
//
// @Benchmark
// public String concatenation() {
// String result = "";
// for (int i = 0; i < size; i++) {
// result += "a"; // 매번 새 객체
// }
// return result;
// }
//
// @Benchmark
// public String stringBuilder() {
// StringBuilder sb = new StringBuilder(size);
// for (int i = 0; i < size; i++) {
// sb.append("a");
// }
// return sb.toString();
// }
//
// // mvn clean install
// // java -jar target/benchmarks.jar
// }
class Main {
public static void main(String[] args) {
System.out.println("JMH는 JIT 최적화, GC, 워밍업을 고려한 정확한 벤치마크를 제공합니다.");
System.out.println("System.nanoTime()으로 직접 측정하면 부정확합니다.");
}
}학습 팁
@Warmup으로 JIT 컴파일 후에 측정하고, @Fork로 별도 JVM에서 실행하여 간섭을 제거합니다.
주의할 점
System.currentTimeMillis()로 벤치마크하면 JIT 최적화, GC 일시정지, OS 스케줄링 등의 영향을 받아 부정확합니다.
자주 묻는 질문
성능 테스트 (JMH)란 무엇인가요?
Java Microbenchmark Harness로 정확한 성능 측정을 수행합니다.
성능 테스트 (JMH) 학습 시 주의할 점은 무엇인가요?
System.currentTimeMillis() 로 벤치마크하면 JIT 최적화, GC 일시정지, OS 스케줄링 등의 영향을 받아 부정확합니다.
Continue Learning
Java 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.