我正在尝试记录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中,由于缺乏需要基准和分析器标量结果的报告代码,因此堆栈分析器在文本报告表中仅产生伪结果。您可能会完全忽略它。查看基准测试输出以获取概要分析结果。
没有明确的方法将堆栈分析结果存储为一堆标量。