我有一个简单的程序来测量方法的处理时间。但是,每次运行都会得到不同的结果。 即使我只打印出“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
答案 0 :(得分:0)
From the Java Documentation:
public static long nanoTime()
返回最精确的可用系统计时器的当前值,以纳秒为单位。
此方法只能用于测量经过的时间,与系统或挂钟时间的任何其他概念无关。返回的值表示纳秒,因为某些固定但是任意时间(可能在将来,因此值可能为负)。该方法提供纳秒精度,但不一定是纳秒精度。不保证值的变化频率。由于数值溢出,跨越大于约292年(263纳秒)的连续调用的差异将无法准确计算经过的时间。
因此nanoTime
会导致不同的时间。
答案 1 :(得分:0)
由于系统资源和分配时间而遇到的时差。
System.out.println("")
总是占用相同的时间,但根据当时分配的系统资源,运行时间会有所不同。