System.Nanotime粒度和延迟?

时间:2015-06-02 14:40:12

标签: java jmh

我正在关注此jmh测试http://hg.openjdk.java.net/code-tools/jmh/file/57623b7f64e6/jmh-core-benchmarks/src/main/java/org/openjdk/jmh/benchmarks/NanoTimerBench.java, 对于System.nanotime()。 但我并不完全理解粒度测量和延迟之间的区别。测量延迟和测量粒度之间有什么区别?

1 个答案:

答案 0 :(得分:3)

粒度是计时器的分辨率,例如,在您返回不同的值之前需要经过多长时间。 (如Peter Lawrey put it,最小的碎片有多大,例如,#34;颗粒,"它可以测量。)

在这种情况下,

延迟基本上是获取计时器值所需的时间。

因此,如果获取定时器值需要10ns,但定时器值仅精确到100ns,则延迟为10ns,但粒度为100ns。使用这样的计时器,你可以在40ns的过程中称它为两次或三次,并且总是回到相同的#34;纳秒"值(因为粒度大于延迟)。

或者您可能有一个系统需要20ns来获取计时器值,但该值精确到5ns。在这种情况下,每次调用都会给您一个不同的值,因为粒度小于延迟。