벤치마크 테스트 프로젝트를 생성하면 첫 화면에 이런 코드들이 보일 것이다.
testMethod에 @Benchmark라는 어노테이션이 있는데, 이는 testMethod를 벤치마크 테스트 하겠다는 선언이다.
이처럼 메소드에 @Benchmark어노테이션을 설정해서 메소드 단위로 벤치마크 테스트를 할 수 있다.
JMH를 사용할 때 벤치마크 테스트 설정은 어노테이션으로 변경할 수 있는데 몇 가지 정리해 보도록 하겠다.
@Warmup
실제 측정 전 워밍업 횟수를 조절할 수 있는 어노테이션.
iterations 속성 값으로 반복 횟수를 조절 할 수 있다.
@Measurement
실제 측정 반복 횟수를 조절할 수 있는 어노테이션.
iterations 속성 값으로 반복 횟수를 조절 할 수 있다.
@Timeout
timeout을 설정할 수 있는 어노테이션.
@BenchmarkMode
벤치마크 테스트의 측정 모드를 설정할 수 있다.
Mode.Throughput : 초당 작업 수를 측정, 벤치 마크 방법을 실행할 수 있는 초당 횟수
Mode.AverageTime : 벤치마크 메소드를 실행하는 데 걸리는 평균 시간을 측정
Mode.SampleTime : 최대, 최소 시간 등을 포함하여 벤치마크 메소드를 실행하는 데 걸리는 시간을 측정
Mode.SingleShotTime : 단일 벤치마크 메소드를 실행하는데 걸리는 시간을 측정(콜드 스타트(JVM 워밍업 없음)에서 성능을 테스트하는데 유용)
Mode.All : 위 4개의 벤치마크 모드로 모두 측정
@OutputTimeUnit
출력되는 측정 시간 단위를 조절할 수 있다.
@State
Scope.Thread는 스레드 별로 인스터스를 생성.
Scope.Benchmark는 동일한 테스트 내의 모든 스레드에서 똑같은 인스턴스를 공유.(멀티스레드 성능 테스트에 사용)
Scope.Group은 스레드 그룹마다 인스턴스를 생성.
'JAVA > Benchmark Test' 카테고리의 다른 글
[JAVA] 벤치마킹 환경 구성, 테스트 코드 작성 (0) | 2021.03.08 |
---|