JMH - 获得主要结果和获得次要结果之间的区别

JMH - Diff between getPrimaryResults and getSecondaryResults

JMH中RunResultsclass的getPrimaryResultsgetSecondaryResults方法有什么区别?

我没有在代码基础上验证它,但据我了解,主要结果是由 JMH 单独生成的数字(时间测量),而次要结果是通过分析器等其他工具获得的。

更新:我刚刚看到 StackProfiler 是 JMH 的一部分,这意味着我的定义并不完全有效。

更新 2:同时,Aleksey Shipilev 在他的评论中提供了更清晰的定义。

下面是从基准测试结果中提取的一些行。我用“-prof stack”

开始了基准测试
[java] Iteration  10: 104439194.250 ±(99.9%) 7883662.439 ns/op
[java]                  ·stack: <delayed till summary>
...
[java]   118162555.108 ±(99.9%) 8317229.030 ns/op [Average]
[java]   (min, avg, max) = (102325413.750, 118162555.108, 149303159.000), stdev = 12448837.807
[java]   CI (99.9%): [109845326.078, 126479784.138] (assumes normal distribution)
...
[java] Secondary result "·stack":
[java] Stack profiler:
[java] ....[Thread state distributions]....................................................................
[java]  87.3%         RUNNABLE
[java]  12.7%         WAITING
[java] ....[Thread state: RUNNABLE]....................................................................    ....
[java]  82.3%  94.3% sun.management.ThreadImpl.getThreadTotalCpuTime0

如您所见,堆栈分析器的结果被标记为次要结果。希望能有所帮助。