鉴于以下内容(我从较大的计划中获取)
t1 = System.currentTimeMillis();
for (int i = 0; i < 3; i++) {
t2 = System.currentTimeMillis();
for (int j = i; j <= 1000; j += 3) {
t3 = System.currentTimeMillis();
//j loop body
}
}
当我运行程序并测试速度时,我发现
t2 - t1约为2700毫秒
t3 - t2约为1300毫秒
相比之下,以下程序会向控制台输出3毫秒的时间
public class Sum {
public static void main(String[] args) {
int sum = 0;
long t1 = System.currentTimeMillis();
for (int k = 0; k < 1000000; k++) {
sum += k;
}
System.out.println(System.currentTimeMillis() - t1);
System.out.println(sum);
}
}
如何简单地输入i和j for循环需要花费很多时间?
我很欣赏我没有展示i和j循环的完整程序,但是如果有人知道为什么会发生这种情况,那么这将节省我创建一个合适的示例程序(不是&#39) ;太大了)在这里发帖。
答案 0 :(得分:1)
您只设置t1
一次,t2
设置3次,t3
设置约1000次。
您将t1
与上次设置t2
进行比较。
您将上次设置t2
与上次设置t3
的时间进行比较。
第一次比较显示内部循环的前两次迭代的组合运行时。 第二个比较显示了内部循环3(== last)迭代的运行时。
因此,你的数字非常有意义,因为第一次比较大约是第二次比较的2倍。答案 1 :(得分:-1)
System.currentTimeMillis的();花费很长时间更快的代码不会在for循环中调用函数
任何类型的函数调用对于cpu来说都比简单的语句或算术运算更多的工作