我正在尝试记录JMH基准测试的结果。该基准非常好,可以按预期工作。问题在于记录结果。无论我使用什么ResultFormatType,结果输出都会显示NaN,以获取来自堆栈分析器的信息。

我了解这可能是因为堆栈信息被延迟到摘要为止。如何将此摘要数据添加到我要存储的结果中?

    Options opt = new OptionsBuilder().include(".*").warmupIterations(5)
    .measurementIterations(5).addProfiler(StackProfiler.class).forks(0).resultFormat(ResultFormatType.CSV)
    .result("Benchmark_Results_" + new SimpleDateFormat("dd.MM.yyyy_HH.mm.ss").format(new Date())).build();


CSV输出示例。

"Benchmark","Mode","Threads","Samples","Score","Score Error (99.9%)","Unit"
"com.example.com.BenchmarkTest.runBenchmark","avgt",1,5.000000,1.873819,0.132597,"s/op"
"com.example.com.BenchmarkTest.runBenchmark:·stack","avgt",1,1.000000,NaN,NaN,"---"

最佳答案

在JMH中,由于缺乏需要基准和分析器标量结果的报告代码,因此堆栈分析器在文本报告表中仅产生伪结果。您可能会完全忽略它。查看基准测试输出以获取概要分析结果。

没有明确的方法将堆栈分析结果存储为一堆标量。

10-04 12:26
查看更多