Релиз 24.3.0 добавляет средства бенчмаркинга JMH в кодовую базу LogoRRR.
JMH — Java Microbenchmark Harness — это стандартный инструмент для измерения производительности JVM. LogoRRR обрабатывает большие файлы, обрабатывая отдельные строки логов миллионы раз за запуск, что делает некоторые из его внутренних циклов действительно чувствительными к производительности. JMH дает воспроизводимые, заслуживающие доверия цифры именно для таких горячих участков кода.
Настройка
LogoRRR написан на Scala, но использует Maven в качестве инструмента сборки — что несколько необычно, но здесь работает хорошо. Настройка JMH через стандартный Maven-архетип была простой. Сами бенчмарки написаны на Java, но кодовая база Scala предоставляет чистые точки входа, которые бенчмарки могут вызывать напрямую.
Результаты
Предположение перед началом работы заключалось в том, что конкретная функция, вызываемая очень часто при каждой загрузке файла, уже была достаточно быстрой. JMH доказал, что это предположение было неверным. После измерений и итераций пропускная способность этой функции увеличилась более чем вдвое. Такой результат — именно то, для чего нужны бенчмарки: они заменяют догадки данными.
LogoRRR уже был способен обрабатывать большие файлы логов до этой работы. С этими улучшениями он обрабатывает их быстрее — и теперь создана инфраструктура бенчмаркинга для отслеживания регрессий в будущих релизах.
Инструменты вроде JMH покажут вам, что действительно работает, и обеспечат воспроизводимые результаты.
Фото в заголовке: Nathan Salt на Pexels.
