JMHの使い方をメモしておく。
※使ったものしかメモしていないので注意。
導入の方法はJavaのベンチツール、JMHの導入 を参照。
テストしたいコードを書く
導入で自動生成されたクラス(MyBenchmark.java)にメソッド、testMethod()があるのでそこにテストコードを追記する。
テストコードの例は Javaのマイクロベンチマークツール「JMH」 を参照。
備考
- メソッドに @Benchmarkアノテーションが付与されていると、テスト対象と判定される。
Javaのマイクロベンチマークツール「JMH」 では @GenerateMicroBenchmark と記載されているが、その後のバージョンアップでアノテーションが変わった模様。 - メソッド名は日本語では付けられない模様。起動時にエラーになる。
- 処理順はメソッド名のアルファベット昇順。
main()メソッドを実装する
IDEから実行したい場合は必須。
コマンドプロンプトから実行する場合は、テスト対象のクラスが複数あるとき必須
public static void main(String... args) throws RunnerException {
Options opt = new OptionsBuilder().include(実行したいクラス.class.getSimpleName()).warmupIterations(5)
.measurementIterations(5).forks(2).build();
new Runner(opt).run();
}
- warmupIterations()メソッドの引数はウォーミングアップ回数
- measurementIterations()メソッドの引数は計測を繰り返す回数
- forks()の引数は計測全体の繰り返し数。
※Javaのマイクロベンチマークツール「JMH」 に記載されている内容から書き方が変わっているので注意。
コンパイルして実行する
コマンドプロンプトで実行する時
mvn clean install
java -jar target/benchmarks.jar
java -jar で起動時のオプションは Javaのマイクロベンチマークツール「JMH」 を参照。
備考
- jarファイルの名前はpom.xmlで変更できる。
プロジェクトの雛形生成機能で作成したときは benchmarks.jar になっている。
IDEで実行する時(eclipseでしか試していない)
- pom.xmlで clean を実行
- pom.xmlで install を実行
- main() メソッドが書かれているクラスを実行