为什么循环比循环更快

时间:2016-03-21 10:13:33

标签: java loops

我最近开始学习java,我对此感到有点难过---

以下程序确定for循环的速度 -

public class ForLoopExample {
    public static void main(String[] args) {
        long startTime = System.nanoTime();
        for(int a = 0; a < 10; a++) {
            System.out.println(a);
        }

        long endTime = System.nanoTime();
        System.out.println("for loop timing =  " + (endTime - startTime) + " ns");
        System.out.println("loop completed");
    }
}

,输出时间为:

  
    

for loop timing = 853716 ns

  

确定while循环速度的程序:

public class WhileLoopExample {
    public static void main(String[] args) {
       int a=0;
       long startTime = System.nanoTime();
       while(a < 10) {
            System.out.println(a);
            a++;
       }
       long endTime = System.nanoTime();
       System.out.println("while loop timing = " + (endTime - startTime) + " ns"); 
    }
}
  
    

while循环时序= 928358 ns

  
Why does this happen a detailed explanation would be appreciated. 

1 个答案:

答案 0 :(得分:2)

使用十次以上的迭代重新运行测试,但也运行更多迭代迭代,例如内循环中的10000和外部中的十个并且平均结果。他们应该很接近。

存在差异的原因是操作系统和多线程的结果。操作系统正在管理除程序之外的许多任务,这些任务的优先级可能略高于您的程序。这会导致执行中的视觉延迟。

样本量越大,应减少结果的差异。