Goの go test -bench
のようにJavaでベンチマークを簡単に取りたかったので調べた。
jmh が有名どころのようなので、こちらを使ってみる。
jmhはメソッドなど小さな単位でマイクロベンチマークを取ることができる。
小さなコードを単純に実行するとコードが大きいときには行われない JIT コンパイルなどの最適化がはたらくことで実際よりパフォーマンスが高く出ることがあるが、 JMH はこれを防ぐことでより正確にベンチマークを取ることができるそうだ。
IDEであればこのmain関数を実行すればベンチマークの結果が出力される。
mavenで実行可能jarファイル(Fat Jar)を作成する ことで java -jar
で実行することもできる。
自分でMainを書かずにエントリポイントに org.openjdk.jmh.Main
を指定すればコマンドライン引数でオプションを設定できる
参考