[英]How to retrieve benchmark JMH result as Java object after execution?
我有一个项目,我用 JMH 库编写了一个基准函数:
@Benchmark
@Fork(value = 2, warmups = 1)
@Measurement(iterations = 3, time = 5)
@Warmup(iterations = 2, time = 5)
@BenchmarkMode(Mode.AverageTime)
public Collection<List<String>> benchmark(final MyState myState) {
return myState.field.execute();
}
我启动了这个基准测试
public static void main(final String[] args) throws RunnerException {
final Options options = new OptionsBuilder().build();
new Runner(options).run();
}
我想将基准测试结果检索为 Java 对象(例如BenchmarkTaskResult )。
一种解决方案是将结果作为 json 输出,如下所示:
public static void main(final String[] args) throws RunnerException {
final Options options =
new OptionsBuilder().result(result.json).resultFormat(ResultFormatType.JSON).build();
new Runner(options).run();
}
然后反序列化 json 文件以将其放入 Java 对象中。
有没有办法直接在 Java 对象中检索基准结果而无需反序列化任何东西?
你可以尝试类似的东西
final Options options = new OptionsBuilder().build();
Collection<RunResult> runResults = new Runner(options).run();
runResults.forEach(runResult -> {
BenchmarkResult aggregatedResult = runResult.getAggregatedResult();
Result primaryResult = runResult.getPrimaryResult();
// ...
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.