得到不同的持续时间结果的方法?

时间:2014-02-05 06:11:01

标签: java

我有一个简单的程序来测量方法的处理时间。但是,每次运行都会得到不同的结果。 即使我只打印出“Hello”字符串,我得到的结果也不同。我以为我会得到相同的结果。你能提供一些解释吗?

public static void run() throws Exception {
    double start = System.nanoTime();
    System.out.println("Hello");
    // other operation
    double end = System.nanoTime();
    System.out.println(end - start);
}

第一个结果:112573.0
第二个结果:122195.0
第三个结果:293140.0

2 个答案:

答案 0 :(得分:0)

From the Java Documentation:

public static long nanoTime()

返回最精确的可用系统计时器的当前值,以纳秒为单位。

此方法只能用于测量经过的时间,与系统或挂钟时间的任何其他概念无关。返回的值表示纳秒,因为某些固定但是任意时间(可能在将来,因此值可能为负)。该方法提供纳秒精度,但不一定是纳秒精度。不保证值的变化频率。由于数值溢出,跨越大于约292年(263纳秒)的连续调用的差异将无法准确计算经过的时间。

因此nanoTime会导致不同的时间。

答案 1 :(得分:0)

由于系统资源和分配时间而遇到的时差。 System.out.println("")总是占用相同的时间,但根据当时分配的系统资源,运行时间会有所不同。