См. Следующий фрагмент:
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);
Мне интересно, почему первый вложенный цикл работает медленнее, чем второй?
Привет! * * 1006
Важное примечание! : Мне очень жаль, что я случайно сделал переменную j, начинающуюся с 1, когда этот вопрос впервые задается, я внес исправление.
Обновление: в циклах нет какой-либо определенной логики, я просто провожу какой-то тест, на самом деле, этот вопрос задают во время интервью, и интервьюер подсказывает мне изменить порядок циклов для достижения лучшей производительности. Кстати, я использую JDK1.5. после некоторого теста я теперь более смущен, потому что результат программы не согласован - иногда первый цикл работает быстрее, чем второй, но большую часть времени он работает медленнее, чем второй.