Añadiendo benchmarks con JMH

Añadiendo benchmarks con JMH

Hacer LogoRRR rápido de nuevo.

La versión 24.3.0 incorpora las herramientas de benchmarking JMH al código fuente de LogoRRR.

JMH — el Java Microbenchmark Harness — es la herramienta estándar para medir el rendimiento en la JVM. LogoRRR maneja archivos grandes procesando líneas individuales de registro millones de veces por ejecución, lo que hace que algunos de sus bucles internos sean genuinamente sensibles al rendimiento. JMH proporciona cifras reproducibles y fiables precisamente para este tipo de rutas de código críticas.

Configuración

LogoRRR está escrito en Scala pero utiliza Maven como herramienta de construcción — algo poco común, pero que funciona bien en este caso. El arranque de JMH mediante el arquetipo Maven estándar fue sencillo. Los benchmarks en sí están escritos en Java, pero el código base en Scala expone puntos de entrada limpios que los benchmarks pueden llamar directamente.

Resultados

La hipótesis inicial era que una función determinada, llamada con mucha frecuencia durante la carga de archivos, ya era razonablemente rápida. JMH demostró que esa hipótesis era incorrecta. Tras medir e iterar, el rendimiento de esa función se más que duplicó. Ese tipo de resultado es exactamente para lo que sirven los benchmarks: reemplazan las conjeturas con datos.

LogoRRR ya era capaz de manejar archivos de registro grandes antes de este trabajo. Con estas mejoras, los maneja más rápido — y la infraestructura de benchmarking ya está en marcha para detectar regresiones en futuras versiones.

Herramientas como JMH te mostrarán qué funciona realmente y proporcionarán resultados reproducibles.

Foto de portada por Nathan Salt en Pexels.