5

I was testing some algorithms which I surrounded with a nanoseconds timer when I randomly forgot to remove the timer I found out that this code:

    a = System.nanoTime();
    System.out.println(System.nanoTime() - a);

always prints 4400 nano seconds on my system. That would be 4.4 microseconds whereas this code:

    a = System.currentTimeMillis();
    for (int i = 0; i < 1000; i++)
        System.nanoTime();
    System.out.println(System.currentTimeMillis() - a);

Prints 0

4

2 回答 2

4

4400 纳秒是 4.4 微秒,或 0.0044 毫秒。第二个示例将始终打印零,因为经过的时间小于一毫秒。然后是使用的两个计时器之间的差异: currentTimeMillis可以针对时钟偏差进行调整而nanoTime不能,但我怀疑这在这里​​起作用。

于 2012-08-10T03:38:10.933 回答
0

使用nanoseconds()来衡量自己可能不是实施者考虑的用例。通常,您会使用它来计时“慢”操作,或者对“快”操作的多次调用,这些操作一起是“慢”的,其中“慢”是指超过 0.1 毫秒的任何时间。

您想要延长操作时间的原因是粒度nanoseconds()不是那么好 - 取决于硬件和操作系统,但远不及纳秒。

于 2015-02-19T08:43:15.023 回答