次のスニペットを参照してください。
Long first_begin = System.currentTimeMillis();
// first nested loops
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 1000000; j++) {
// do some stuff
}
}
System.out.println(System.currentTimeMillis() - first_begin);
// second nested loops
Long seconde_begin = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++) {
for (int j = 0; j < 10; j++) {
// do some stuff
}
}
System.out.println(System.currentTimeMillis() - seconde_begin);
最初のネストされたループが2番目のループよりも遅く実行されているのはなぜですか?
よろしく!
重要な注意点!:この質問を最初に行ったときに、誤って1で始まる変数jを作成してしまったことをお詫び申し上げます。修正しました。
更新:ループ内に特定のロジックはありません。テストを行っているだけです。実際、これはインタビュー中に尋ねられた質問であり、インタビュアーは、パフォーマンスを向上させるためにループの順序を変更するように促します。ところで、私はJDK1.5を使用しています。いくつかのテストの後、プログラムの結果に一貫性がないため、今はもっと混乱しています---最初のループは2番目のループよりも速く実行されることもありますが、ほとんどの場合、2番目のループよりも遅く実行されます。