JMH中的绘图(Plots)

4

我一直在阅读关于JMH的内容。但是我找不到使用它来生成图表的方法。JMH是否支持绘图?或者是否有第三方库可以实现此功能?

1个回答

4

JMH不支持绘图。您可以将性能结果写入文件(例如使用-rf csv-rf json),并使用您熟悉的绘图工具。或者,您可以从Java API中获取的RunResult实例中提取性能数据,并使用任何嵌入式库进行解析/渲染。

如果您使用设置来观察单个调用执行时间(或批量调用)并且想要查看每个持续时间的图表(类似于此处的最后一个图表here),则可以组合设置:

@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, --

请问您能否提供一些支持jmh.out文件的绘图工具名称以及RunResult数据提取的链接?我已经搜索了,但目前还没有找到合适的。 - Isuru Gunawardana
1
几乎任何明智的工具都可以读取CSV文件:Libre/OpenOffice,R等。 - Aleksey Shipilev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接