PHpullh
학습 라이브러리/Java/성능 테스트 (JMH)

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 스케줄링 등의 영향을 받아 부정확합니다.