4

私はJMHについて読んでいます。しかし、これを使用してプロットを生成する方法が見つかりませんでした。JMH はプロットをサポートしていますか? または、この目的のためのサードパーティのライブラリはありますか?

4

1 に答える 1

4

JMH はプロットをサポートしていません。パフォーマンス結果をファイルに書き出すことができ(たとえば、またはを使用)、使い慣れたプロット ツールを使用できます。または、 Java API から取得したインスタンスからパフォーマンス データを抽出し、組み込みライブラリで解析/レンダリングすることもできます。-rf csv-rf jsonRunResult

設定を使用して単一の呼び出し実行時間(またはバッチ呼び出し) を観察し、各期間のプロット (最後のプロットのようなもの) を表示したい場合は、設定を組み合わせることができます

@Measurement(batchSize = 1000, iterations = 500)
@BenchmarkMode({Mode.SingleShotTime})

そして、必要なデータを csv で取得するためのスクリプトを少し作成します。このような設定では、jmh から結果の csv に要約データしかありません。

mvn package && java -jar target/benchmarks.jar -foe true -rf csv | tee output.txt
N=5 # set here number of benchmarks plus 2
grep Iteration -A 3 output.txt | grep -v Warmup | sed 's/$/,/' | xargs -l$N | sed 's/,$//'

次のようなものが出力されます。

Iteration 1: 93.915 ±(99.9%) 2066.879 s/op, readerA: 28.487 s/op, readerB: 28.525 s/op, writer: 224.735 s/op, --
Iteration 2: 100.483 ±(99.9%) 1265.993 s/op, readerA: 59.927 s/op, readerB: 60.912 s/op, writer: 180.610 s/op, --
Iteration 3: 76.458 ±(99.9%) 760.395 s/op, readerA: 52.513 s/op, readerB: 52.276 s/op, writer: 124.586 s/op, --
Iteration 4: 84.046 ±(99.9%) 1189.029 s/op, readerA: 46.112 s/op, readerB: 46.724 s/op, writer: 159.303 s/op, --
于 2015-03-03T10:26:45.340 に答える