今天遇到这样一个问题,
int a,b;sum=0;
//a,b,赋值
//...
//当a << b 时,下面2个函数哪个更快?
void fun1(){
for(int i=0;i<a;i++){
for(int j=0;j<b;j++){
sum++;
}
}
}
void fun2(){
for(int i=0;i<b;i++){
for(int j=0;j<a;j++){
sum++;
}
}
}
咋一看,当a 远小于 b 时,fun2应该更快一点吧,fun2 内循环 与外循环的切换要少一些,从堆栈退出的次数要少很多。这只是感觉,于是我又写了如下程序做了一个测试:
































































运行结果如下:
foo2 Over
foo1 Over