La versión 24.3.0 incorpora al código de LogoRRR la infraestructura necesaria para ejecutar benchmarks con JMH.
JMH , Java Microbenchmark Harness, es la herramienta de referencia para medir el rendimiento en la JVM. LogoRRR procesa archivos grandes recorriendo millones de veces sus líneas de registro, de modo que algunos de sus bucles internos son realmente críticos para el rendimiento. JMH aporta mediciones fiables y reproducibles para estas rutas de código aisladas y permite comprobar si las hipótesis sobre su comportamiento son correctas.
Configuración
LogoRRR está escrito en Scala, pero usa Maven como herramienta de compilación. No es la combinación más habitual, aunque funciona bien en este proyecto. La configuración de JMH a partir del arquetipo estándar de Maven resultó sencilla. Los benchmarks están escritos en Java y el código Scala ofrece puntos de entrada claros a los que pueden llamar directamente.
Quien busque una referencia pequeña e independiente puede consultar el repositorio público jmh-maven-example , un ejemplo genérico con licencia MIT para JDK 25, Maven y JMH. No contiene código de LogoRRR. LogoRRR es una aplicación distinta y no es de código abierto.
Resultados
La hipótesis inicial era que una función llamada con mucha frecuencia al cargar cada archivo ya era lo bastante rápida. JMH demostró lo contrario. Después de varias rondas de medición y optimización, la tasa de procesamiento de esa función aumentó a más del doble. Esa es precisamente la utilidad de un benchmark: sustituir las conjeturas por datos.
LogoRRR ya podía procesar archivos de registro grandes antes de este trabajo. Ahora lo hace con mayor rapidez, y la infraestructura de benchmarks permite detectar regresiones en versiones futuras.
Dos formas de validar el rendimiento
JMH sigue siendo una herramienta de microbenchmarking: mide rutas de código muy utilizadas y bien delimitadas, y sirve para validar hipótesis sobre su comportamiento. Sus resultados son útiles para diagnosticar problemas, pero no constituyen el criterio de publicación con el que se compara el rendimiento general del producto entre versiones.
Por eso, cada versión candidata (RC) y cada versión estable de LogoRRR genera además un informe de rendimiento basado en escenarios de producto independientes de los detalles de implementación. Métricas como el tiempo transcurrido desde que se abre un archivo hasta que la vista está lista, o desde que se inicia una búsqueda hasta que aparecen los resultados, se pueden comparar entre versiones y actúan como barrera contra regresiones en el pipeline de publicación en CI. El informe del producto y los resultados de JMH se presentan por separado: el primero protege la experiencia de uso a lo largo de las versiones; los segundos ayudan a explicar el rendimiento de las rutas críticas.
Herramientas como JMH muestran qué funciona de verdad y ofrecen resultados reproducibles.
Foto de Nathan Salt en Pexels.
