我尝试下面的代码:为什么调用函数比不调用函数更快?
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.
看来,第二个循环花更少的时间,比第一个! 我不明白为什么会发生这种情况。感谢您的帮助。
更新: 我交换的两个循环,现在一环花费较少的时间!
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 ) - 因为你如何测量不太可能产生任何有用的东西。 –
无法在我的PC上确认 - 循环一次使用时间= 2,z = 18 循环两次使用时间= 5,z = 18. :-) – Smutje