我正在关注此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()
。
但我并不完全理解粒度测量和延迟之间的区别。测量延迟和测量粒度之间有什么区别?
答案 0 :(得分:3)
粒度是计时器的分辨率,例如,在您返回不同的值之前需要经过多长时间。 (如Peter Lawrey put it,最小的碎片有多大,例如,#34;颗粒,"它可以测量。)
在这种情况下,延迟基本上是获取计时器值所需的时间。
因此,如果获取定时器值需要10ns,但定时器值仅精确到100ns,则延迟为10ns,但粒度为100ns。使用这样的计时器,你可以在40ns的过程中称它为两次或三次,并且总是回到相同的#34;纳秒"值(因为粒度大于延迟)。
或者您可能有一个系统需要20ns来获取计时器值,但该值精确到5ns。在这种情况下,每次调用都会给您一个不同的值,因为粒度小于延迟。