LoginSignup
6
5

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-01-28

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() メソッドが書かれているクラスを実行
6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5