JMH - 获得主要结果和获得次要结果之间的区别
JMH - Diff between getPrimaryResults and getSecondaryResults
JMH中RunResults
class的getPrimaryResults
和getSecondaryResults
方法有什么区别?
我没有在代码基础上验证它,但据我了解,主要结果是由 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
如您所见,堆栈分析器的结果被标记为次要结果。希望能有所帮助。
JMH中RunResults
class的getPrimaryResults
和getSecondaryResults
方法有什么区别?
我没有在代码基础上验证它,但据我了解,主要结果是由 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
如您所见,堆栈分析器的结果被标记为次要结果。希望能有所帮助。