Java

Javaのベンチマークツール、JMHにテストコードを書いて計測してみる

More than 1 year has passed since last update.

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でしか試していない)


  1. pom.xmlで clean を実行

  2. pom.xmlで install を実行

  3. main() メソッドが書かれているクラスを実行