一个if判断耗时很短,差不多1ms不到,但是在for循环添加的if判断会被无限放大,以下为实际测试结果:
实验一
循环体里面只是进行了一次乘法运算和一个if判断,结果取10次实验平均值:
double avgTime = 0;
for (int k = 0; k < 10; k ++) {
long startTime = System.currentTimeMillis();
for (int i = 0; i < 10000; i ++) {
for (int j = 0; j < 10000; j ++) {
long temp = i * j;
if (temp == -1) temp = -2;
}
}
avgTime = (System.currentTimeMillis() - startTime) / 1000.0 / 10.0;
}
System.out.println("avg 耗时:" + avgTime);
循环次数 | 耗时 |
---|---|
10^8 | 0.08s |
10^9 | 0.66s |
10^10 | 0.65s |
10^11 | 0.655s |
实验二
循环体里面只是进行了一次加法运算和一个if判断,结果取10次实验平均值:
double avgTime = 0;
for (int k = 0; k < 10; k ++) {
long startTime = System.currentTimeMillis();
for (int i = 0; i < 10000; i ++) {
for (int j = 0; j < 10000; j ++) {
long temp = i + j;
if (temp == -1) temp = -2;
}
}
avgTime = (System.currentTimeMillis() - startTime) / 1000.0 / 10.0;
}
System.out.println("avg 耗时:" + avgTime);
循环次数 | 耗时 |
---|---|
10^8 | 0.0561s |
10^9 | 0.4769s |
10^10 | 4.3753s |
10^11 | 43.466s |