新增 JMH 基準測試

新增 JMH 基準測試

用資料讓 LogoRRR 再次變快。

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。