1
が、私は最近のJavaを学び始め、私はちょっとこれにより困惑していながら、よりループのためである以下のプログラムはloop--はなぜ</p> <p>---速くループ
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");
}
}
のための速度を決定し、出力タイミングである:ループタイミングの
= 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");
}
}
ながら以上10とループタイミング= 928358のNS
Why does this happen a detailed explanation would be appreciated.
違いはありません。より多くのループ反復でテストを再試行してみましょう。 – f1sh
も参照してくださいhttp://stackoverflow.com/questions/504103/how-do-i-write-a-correct-micro-benchmark-in-java –
私は確信していませんが、私はそれが関連していないと思うJVMのバックグラウンドは、 'while'変数' a'を必要とするときだけレジスタにロードすることができます。 'for'ループ変数' a'はループ中に常にレジスタに格納されます。申し訳ありませんが、英語は母国語ではありません。 –