1

我正在看这个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(). 但我并不真正理解粒度和延迟测量之间的区别。测量延迟和测量粒度有什么区别?

4

1 回答 1

3

粒度是计时器的分辨率,例如,在获得不同值之前必须经过多少时间。(正如彼得劳里所说,最小的碎片有多大,例如“谷物”,它可以测量。)

在这种情况下,延迟基本上是获取计时器值所需的时间。

所以如果获取定时器值需要10ns,但定时器值只能精确到100ns,那么延迟是10ns,但粒度是100ns。使用这样的计时器,您可能会在例如 40ns 的过程中调用它两到三遍,并且总是返回相同的“纳秒”值(因为粒度大于延迟)。

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

于 2015-06-02T14:43:35.337 回答