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
