リリース 24.3.0 では、LogoRRR のコードベースに JMH ベンチマーク機能を追加しました。
JMH(Java Microbenchmark Harness)は、JVM のパフォーマンス計測における標準ツールです。LogoRRR は大きなファイルを処理する際、個々のログ行を実行ごとに何百万回も処理します。そのため、内部ループの一部は実際にパフォーマンスに敏感です。JMH はこのようなホットパスに対して、再現性があり信頼できる数値を提供してくれます。
セットアップ
LogoRRR は Scala で書かれていますが、ビルドツールとして Maven を使用しています — やや珍しい組み合わせですが、ここではうまく機能しています。標準の Maven アーキタイプを使った JMH のブートストラップは簡単でした。ベンチマーク自体は Java で書かれていますが、Scala のコードベースがベンチマークから直接呼び出せるクリーンなエントリーポイントを提供しています。
結果
この作業に入る前の前提は、ファイル読み込みごとに非常に頻繁に呼び出される特定の関数がすでにそこそこ高速だというものでした。JMH はその前提が誤りであることを証明しました。計測と改善を繰り返した結果、その関数のスループットは2倍以上になりました。これこそがベンチマークの真価です:推測をデータに置き換えることができます。
LogoRRR はこの作業以前から大きなログファイルを扱う能力がありました。今回の改善により、より高速に処理できるようになり、ベンチマーク基盤も整ったことで将来のリリースでのパフォーマンス低下を検知できるようになりました。
JMH のようなツールは、何が本当に機能するかを示し、再現性のある結果を提供してくれます。
ヘッダー写真:Nathan Salt(Pexels)
