Добавление бенчмарков JMH

Добавление бенчмарков JMH

Делаем LogoRRR снова быстрым.

Релиз 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.