«Второй» цикл выполняется быстрее, поэтому
blockquote>Когда вы выполняете метод не менее 10000 раз, он запускает весь метод для компиляции. Это означает, что ваш второй цикл может быть
- быстрее, поскольку он уже скомпилирован при первом запуске.
- медленнее, потому что при оптимизации он не имеет хорошей информации / счетчик о том, как выполняется код.
Лучшее решение состоит в том, чтобы поместить каждый цикл в отдельный метод, чтобы один цикл не оптимизировал другой И запустил это несколько раз, игнорируя первый
, например
for(int i = 0; i < 3; i++) { long time1 = doTest1(); // timed using System.nanoTime(); long time2 = doTest2(); System.out.printf("Test1 took %,d on average, Test2 took %,d on average%n", time1/RUNS, time2/RUNS); }