24.3.0 版本为 LogoRRR 的代码库引入了 JMH 基准测试功能。
JMH——Java 微基准测试框架——是 JVM 性能测量的标准工具。LogoRRR 通过每次运行时对单条日志行进行数百万次处理来应对大型文件,这使得其中某些内层循环对性能极为敏感。JMH 能为这类热点路径提供可复现、可信赖的数据。
配置
LogoRRR 使用 Scala 编写,但采用 Maven 作为构建工具——这种组合虽不常见,但在此处运作良好。通过标准 Maven archetype 引导 JMH 的过程十分顺畅。基准测试本身使用 Java 编写,但 Scala 代码库提供了清晰的入口点,可供基准测试直接调用。
结果
此前的假设是:某个在每次文件加载时被频繁调用的函数已经足够快。JMH 证明了这一假设是错误的。经过测量与迭代优化,该函数的吞吐量提升了一倍以上。这正是基准测试的意义所在:它用数据取代了猜测。
在这项工作之前,LogoRRR 已经能够处理大型日志文件。经过这些改进,它处理起来更快了——而且基准测试基础设施也已就位,能够在未来版本中捕获性能退化。
JMH 等工具会告诉你什么真正有效,并提供可复现的结果。
题图摄影:Nathan Salt,来自 Pexels。
