Я попытался следующий код:Почему вызов функции быстрее, чем вызов функции?
public class Test {
public static void main(String[] args) {
int x = 9, y = 9, z = 0;
long startTime = System.currentTimeMillis();
// System.out.println("loop one start time = " + startTime);
for (int i = 0; i < 10000; i++) {
for (int j = 0; j < 10000; j++) {
z = x + y;
}
}
System.out.println("loop one use time = " + (System.currentTimeMillis() - startTime) + ",z = " + z);
startTime = System.currentTimeMillis();
// System.out.println("loop two start time = " + startTime);
for (int i = 0; i < 10000; i++) {
for (int j = 0; j < 10000; j++) {
z = sum(x, y);
}
}
System.out.println("loop two use time = " + (System.currentTimeMillis() - startTime) + ",z = " + z);
}
public static int sum(int x, int y) {
int t;
t = x + y;
return t;
}
}
Вывод на консоль:
loop one use time = 216,z = 18
loop two use time = 70,z = 18.
кажется, что второй цикл меньше времени, чем первый! Я не понимаю, почему это происходит. Спасибо за помощь.
Update: Я обменялся две петли, теперь цикл один занимает меньше времени !!
loop two use time = 219,z = 18
loop one use time = 69,z = 18
Быстрый вопрос - какой результат, если вы поменяете две петли вокруг кода? –
Возможный дубликат [Как написать правильный микро-тест в Java?] (Http://stackoverflow.com/questions/504103/how-do-i-write-a-correct-micro-benchmark-in-java) - потому что, как вы измеряете, вряд ли что-нибудь пригодится. –
Не удается подтвердить на моем ПК - одно время использования = 2, z = 18 цикл два времени использования = 5, z = 18. :-) – Smutje