JMH - getPrimaryResults和getSecondaryResults之间的差异

时间:2015-12-29 22:12:33

标签: microbenchmark jmh

JMH中getPrimaryResults类的getSecondaryResultsRunResults方法之间有什么区别?

1 个答案:

答案 0 :(得分:1)

我还没有在代码基础上验证它,但据我所知,主要结果是仅由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

如您所见,堆栈探查器的结果标记为辅助结果。希望有所帮助。