JAVA/Benchmark Test

[JAVA] 벤치마킹 테스트 사용법

Yoon 2021. 3. 20. 11:51

벤치마크 테스트 프로젝트를 생성하면 첫 화면에 이런 코드들이 보일 것이다.

 

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