Sample和SingleShot之间的JMH差异

Dan*_*Dan 2 java jmh

什么是设置之间的区别Mode.Sample,并Mode.SingleShot配以measurementIterations一套大多少?它是否实际相同,或两种模式之间存在一些定量差异?

Ale*_*lev 7

但是...... Javadoc非常明确地说明了这一区别?

采样时间:采样每次操作的时间.

通过不断调用{@link Benchmark}方法运行,并随机抽样调用所需的时间.此模式会自动调整采样频率,但可能会忽略一些错过采样测量的暂停.此模式是基于时间的,它将一直运行直到迭代时间到期.

和:

单次拍摄时间:测量单次操作的时间.

通过拨打{@link Benchmark}并测量其时间来运行.当您不想隐藏预热调用,或者您希望查看从呼叫到呼叫的进度,或者您想要记录每个样本时,此模式可用于估计"冷"性能.此模式基于工作,并且仅对{@link Benchmark}方法的单个调用运行.

这种模式的注意事项包括:

  • 通常需要更多的预热/测量迭代.
  • 如果基准很小,定时器开销可能很大; 如果这是一个问题,请切换到{@link #SampleTime}模式.