for(int i=0;i<10;i++){
for(int j=0;j<1000;j++){
//执行代码
}
}for(int i=0;i<1000;i++){
for(int j=0;j<10;j++){
//执行代码
}
}这两个哪个效率高?为什么
for(int j=0;j<1000;j++){
//执行代码
}
}for(int i=0;i<1000;i++){
for(int j=0;j<10;j++){
//执行代码
}
}这两个哪个效率高?为什么
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交换内存的次数。
列循环会减少内层循环初始化、终止次数