我最近开始学习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.
答案 0 :(得分:2)
使用十次以上的迭代重新运行测试,但也运行更多迭代迭代,例如内循环中的10000和外部中的十个并且平均结果。他们应该很接近。
存在差异的原因是操作系统和多线程的结果。操作系统正在管理除程序之外的许多任务,这些任务的优先级可能略高于您的程序。这会导致执行中的视觉延迟。
样本量越大,应减少结果的差异。