运行定义的循环每次都会给出不同的时间

时间:2016-03-25 00:44:15

标签: java loops time

我写了下面的代码来观察循环函数的时间。令人惊讶的是,它为每次运行提供了不同的值。

public static void main(String[] args) {
            for (int attempt = 0; attempt < 10; attempt++) {
            runloop();
        }
    }

    public static void runloop() {
            long sum = 0L;
            long starttime = System.nanoTime();
            for (int x = 0; x < 1000000; x++) {
                sum += x;
            }

            long end = System.nanoTime();
            System.out.println("Time taken:" + (end - starttime) / 1000L);
        }
    }

观察:

Time taken:4062
Time taken:3122
Time taken:2707
Time taken:2445
Time taken:3575
Time taken:2823
Time taken:2228
Time taken:1816
Time taken:1839
Time taken:1811

我无法理解为什么时间上存在这样的差异。 是什么原因?

1 个答案:

答案 0 :(得分:2)

它可以是任何东西:

  • 计算机上运行的其他进程限制了Java的时间
  • 运行垃圾收集器
  • 循环初始化时间
  • ...