demo如下:
public class TestM {
public static void main(String[] args) {
for (int i = 0; i <15 ; i++) {
aaa();//630
//bbb();//600
}
}
private static void aaa() {
long s = System.currentTimeMillis();
int a = 0, b = 1;
for (int i = 0 ; i < 10000; i++) {
for (int j = 0 ; j < 1000; j++) {
for (int k = 0 ; k < 100; k++) {
a += b;
if (a == 10000 * 1000 * 100){
System.out.println("最后一个");
}
}
}
}
System.out.println(System.currentTimeMillis()-s);
}
private static void bbb() {
long s = System.currentTimeMillis();
int a = 0, b = 1;
for (int i = 0 ; i < 100; i++) {
for (int j = 0 ; j < 1000; j++) {
for (int k = 0 ; k < 10000; k++) {
a += b;
if (a == 10000 * 1000 * 100){
System.out.println("最后一个");
}
}
}
}
System.out.println(System.currentTimeMillis()-s);
}
}
结论:外层循环小的效率更高。
为什么?
在aaa的情况下
| 变量/次数 | 初始化次数 | 自增次数 | 比较次数 |
| i | 10000 | 10000 | 10000 |
| j | 10000 * 1000 | 10000 * 1000 | 10000 * 1000 |
| k | 10000 * 1000 * 100 | 10000 * 1000 * 100 | 10000 * 1000 * 100 |
在bbb的情况下
| 变量/次数 | 初始化次数 | 自增次数 | 比较次数 |
| i | 100 | 100 | 100 |
| j | 100* 1000 | 100 * 1000 | 100* 1000 |
| k | 10000 * 1000 * 100 | 10000 * 1000 * 100 | 10000 * 1000 * 100 |
所以,多重for循环,小的放外部
版权声明:本文为dmw412724原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。