繁体   English   中英

执行后如何将基准 JMH 结果检索为 Java 对象?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM