티스토리 뷰

Java

[Java] 마이크로벤치마킹 JMH

snail voyager 2024. 2. 17. 00:43
728x90
반응형

Microbenchmark

마이크로벤치마킹은 컴퓨터 시스템의 성능을 측정하고 비교하기 위해 작고 간단한 테스트를 사용하는 것을 의미합니다. 이는 주로 소프트웨어 라이브러리, 함수 또는 알고리즘의 성능을 평가하거나, 하드웨어 구성 요소의 성능을 테스트하는 데 사용됩니다. 마이크로벤치마킹은 특정 작업의 성능을 목표로 하며, 작업이 작고 빠르기 때문에 여러 번 반복하여 평균 실행 시간을 측정합니다.

  • 빠른 실행: 마이크로벤치마킹 테스트는 작고 간단하기 때문에 빠르게 실행할 수 있습니다. 이는 결과를 빠르게 얻을 수 있고, 변경된 코드나 하드웨어 구성 요소의 성능 변화를 신속하게 측정할 수 있게 해줍니다.
  • 세밀한 분석: 마이크로벤치마킹은 작은 단위의 작업을 실행하므로 세밀한 성능 분석이 가능합니다. 이는 코드나 알고리즘의 성능을 개선하기 위해 작은 변경 사항의 영향을 빠르게 평가할 수 있음을 의미합니다.
  • 단위 테스트와 통합: 마이크로벤치마킹은 단위 테스트와 함께 자주 사용되며, 성능 개선의 일환으로도 사용될 수 있습니다. 또한 특정 애플리케이션의 전체 성능을 측정하기 위해 여러 마이크로벤치마킹 테스트를 통합할 수도 있습니다.

마이크로벤치마킹 주의해야할 점

  • 현실적인 예측: 마이크로벤치마킹 결과는 실제 환경에서의 성능과 항상 일치하지 않을 수 있습니다. 따라서 이러한 결과를 사용하여 실제 환경에서의 성능을 예측하는 데 주의해야 합니다.
  • 과적합 방지: 마이크로벤치마킹에서는 특정 작업에 대한 성능을 측정하기 위한 목적으로만 사용해야 합니다. 작은 변화에 대한 마이크로벤치마킹 결과에 지나치게 의존하면 과적합이 발생할 수 있습니다.
  • 정확한 측정: 마이크로벤치마킹을 수행할 때는 측정 도구와 방법이 정확하고 일관성 있어야 합니다. 이는 신뢰할 수 있는 결과를 얻기 위해 매우 중요합니다.

JMH (Java Microbenchmark Harness)

JMH(Java Microbenchmark Harness)는 자바 마이크로벤치마킹을 수행하기 위한 공식 도구

  • 정확한 측정: JMH는 정확하고 일관된 방식으로 자바 코드의 성능을 측정합니다. 이를 통해 결과의 신뢰성을 보장합니다.
  • 설정 가능한 벤치마크: JMH를 사용하여 다양한 벤치마크를 설정할 수 있습니다. 이는 벤치마크의 반복 횟수, Warmup 시간, Fork 횟수 등을 포함합니다.
  • 다양한 벤치마크 모드: JMH는 다양한 벤치마크 모드를 지원합니다. 이는 Throughput 모드, Average Time 모드, Sample Time 모드 등을 포함합니다.
  • 자동화된 벤치마크 실행: JMH는 벤치마크를 자동화하여 실행할 수 있습니다. 이를 통해 반복적인 벤치마크 실행 및 결과 분석을 자동화할 수 있습니다.
  • 풍부한 보고서 생성: JMH는 실행된 벤치마크에 대한 풍부한 보고서를 생성합니다. 이를 통해 성능 특징을 시각적으로 분석하고 비교할 수 있습니다.

https://github.com/melix/jmh-gradle-plugin

 

 

 

 

728x90
반응형

'Java' 카테고리의 다른 글

[Java] Mockito Framework Spy, ArgumentCaptor  (0) 2024.03.31
[Java] Garbage Collector 개념  (0) 2024.02.19
[Java] JVM  (0) 2024.02.17
[Java] List.of vs Arrays.asList  (1) 2024.02.11
[Java] CPU 와 ThreadPool Size 결정 방법  (0) 2024.01.29
반응형
300x250