2017-05-03 3 views
1

jmhを使用してパフォーマンステストを作成し、アプリケーションのコードの一部を測定したいとします。私はテストを書く方法についてjmh samplesを読んで、jmhとパフォーマンステストについてyoutubeでいくつかの会話を見てきました。jmh設定パラメータの選択方法

@Warmup,@Measurement@Forkの値を正しく選択する方法がわかりません。ほとんどのサンプルでは、​​1フォーク、1秒間で10回繰り返します。

私は、設定のための銀色の弾丸はありませんが、私が入れなければならない値を選ぶ際には、私の思考プロセスは何かを理解しています。

答えて

1

実際にあなたが必要とする可能性のあるパラメータを推薦できるかどうかはわかりません。おそらくツールを書いた人さえいないでしょう。これは、テストしているユースケース、OS、JVMなどに非常に特化しています。

私個人的には、私は個人的には異なるパラメータで数回行い、その結果を分析して分析することができます。 エラー+/-(少なくとも平均時間)フィールドが最初に表示されます。それが大きすぎると(それはあなたが決定するものです)、私は通常@Warmup@Measurementを増やします。それは黄金のルールではありませんが、これが私の行いです。ここで私が使用したサンプルは以下のとおりです。

@BenchmarkMode(Mode.AverageTime) 
@OutputTimeUnit(TimeUnit.NANOSECONDS) 
@Warmup(iterations = 5, time = 2, timeUnit = TimeUnit.SECONDS) 
@Measurement(iterations = 5, time = 2, timeUnit = TimeUnit.SECONDS) 
@State(Scope.Thread) 

私は以前の実行と一定の結果に近づくかどうかを確認するために少しによってiterationstime少しが増加する可能性があります。

私は通常、すべてのベンチマークを同じウォームアップで実行します。その結果は、結果に偏っていません。

ここに来ることは、良い結果と悪い結果が得られるか、遅くて速いことです。しかし、これは出力だけです。理由はではありません。理由を理解してjmhperfasmまたはxperfasmと他の多くのプロファイラで実行すると、私のリーグから完全に別のキッチンになります。

関連する問題