JMH 벤치마크 추가

JMH 벤치마크 추가

LogoRRR을 다시 빠르게 만듭니다.

24.3.0 릴리스에서는 LogoRRR의 코드베이스에 JMH 벤치마킹 시설이 추가되었습니다.

JMH(Java Microbenchmark Harness)는 JVM 성능 측정을 위한 표준 도구입니다. LogoRRR은 실행당 수백만 번의 개별 로그 라인을 처리하여 대용량 파일을 처리하므로, 내부 루프 중 일부는 성능에 매우 민감합니다. JMH는 이러한 핫 패스에 대해 재현 가능하고 신뢰할 수 있는 수치를 제공합니다.

설정

LogoRRR은 Scala로 작성되었지만 빌드 도구로 Maven을 사용합니다. 이는 다소 이례적이지만 여기서는 잘 작동합니다. 표준 Maven 아키타입을 통한 JMH 부트스트래핑은 간단했습니다. 벤치마크 자체는 Java로 작성되었지만, Scala 코드베이스는 벤치마크가 직접 호출할 수 있는 깨끗한 진입점을 제공합니다.

결과

이 작업을 시작할 때의 가정은 파일 로드당 매우 빈번하게 호출되는 특정 함수가 이미 상당히 빠르다는 것이었습니다. JMH는 그 가정이 틀렸음을 증명했습니다. 측정과 반복 작업을 거친 후, 해당 함수의 처리량이 두 배 이상 증가했습니다. 이러한 결과가 바로 벤치마크의 목적입니다. 추측을 데이터로 대체하는 것입니다.

LogoRRR은 이 작업 전에도 대용량 로그 파일을 처리할 수 있었습니다. 이러한 개선을 통해 더 빠르게 처리할 수 있게 되었으며, 이제 향후 릴리스에서 성능 저하를 감지할 수 있는 벤치마킹 인프라가 구축되었습니다.

JMH와 같은 도구는 무엇이 실제로 효과적인지 보여주고 재현 가능한 결과를 제공합니다.

헤더 사진: Pexels의 Nathan Salt