public class Test { public static void main(String[] args){ Test tt = new Test(); long st = System.currentTimeMillis(); tt.ttLoop3(); long end = System.currentTimeMillis(); System.out.println(end - st); } void ttLoop(){ for (int i = 0; i < 10; i++) { for (int j = 0; j < 1000; j++) { fun(i+j); } } }
void ttLoop2(){ for (int i = 0; i < 1000; i++) { for (int j = 0; j < 10; j++) { fun(i+j); } } }
void ttLoop3(){ for (int i = 0; i < 100; i++) { for (int j = 0; j < 100; j++) { fun(i+j); } } }
void fun(long k){ for (int i = 0; i < k; i++) { long t = k+i; } } 我做了个测试, 时间的长短,平均啊, ttLoop2>ttLoop >ttLoop3,其中前面两个不是绝对的,但最后面一个是比较小,不知道有没有弄错,你们看看. 至于原因,我说不上来.是不是像四边形中,正方形和矩形有点相关,嗐猜啊
public class Test { public static void main(String[] args){
Test tt = new Test();
long st = System.currentTimeMillis();
tt.ttLoop3();
long end = System.currentTimeMillis();
System.out.println(end - st);
}
void ttLoop(){
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 1000; j++) {
fun(i+j);
}
}
}
void ttLoop2(){
for (int i = 0; i < 1000; i++) {
for (int j = 0; j < 10; j++) {
fun(i+j);
}
}
}
void ttLoop3(){
for (int i = 0; i < 100; i++) {
for (int j = 0; j < 100; j++) {
fun(i+j);
}
}
}
void fun(long k){
for (int i = 0; i < k; i++) {
long t = k+i;
}
}
我做了个测试, 时间的长短,平均啊, ttLoop2>ttLoop >ttLoop3,其中前面两个不是绝对的,但最后面一个是比较小,不知道有没有弄错,你们看看.
至于原因,我说不上来.是不是像四边形中,正方形和矩形有点相关,嗐猜啊
行循环会减少数据Cache交换内存的次数。
列循环会减少内层循环初始化、终止次数