24.3.0 版本為 LogoRRR 的代碼庫引入了 JMH 基準測試功能。
JMH——Java Microbenchmark Harness——是 JVM 效能測量的標準工具。LogoRRR 需要處理大型日誌檔案,每次執行都會觸及數百萬筆單行日誌,因此部分內層迴圈對效能非常敏感。JMH 能為這類熱點路徑提供可重現、可信賴的數據。
配置
LogoRRR 使用 Scala 編寫,但採用 Maven 作為建置工具——這種組合雖不常見,但在此處運作良好。透過標準 Maven archetype 建立 JMH 基礎結構的過程十分順暢。基準測試本身使用 Java 編寫,而 Scala 程式碼庫提供了清楚的入口點,可供基準測試直接呼叫。
結果
一開始的假設是:某個在每次檔案載入時都會頻繁呼叫的函式已經夠快了。JMH 證明這個假設是錯的。經過測量與反覆最佳化,該函式的吞吐量提升了一倍以上。這正是基準測試的意義:用數據取代猜測。
在這項工作之前,LogoRRR 已經能夠處理大型日誌檔案。經過這些改進,它處理起來更快了,而且基準測試基礎設施也已就位,能夠在未來版本中捕捉效能退化。
JMH 等工具會告訴你什麼真正有效,並提供可複現的結果。
題圖攝影:Nathan Salt,來自 Pexels。
