http://coolshell.cn/articles/4162.html
有两个相同功能代码如下,请在在A,B,C是什么的情况下,请给出三个原因case 1比case 2快,还有三个原因case 2会比case 1要执行的快。(不考虑编译器优化)
case1:
for(i=0;i<N;++i){
a;
b;
c;
}
case2:
for(i=0;i<N;++i){
a;
}
for(i=0;i<N;++i){
b;
}
for(i=0;i<N;++i){
c;
}
Case1比case2快:
1. a b c共用一个公共资源,在一起加锁解锁一次即可;分开则要三次;
2. a b c同时利用一个IO设备,在一起打开关闭一次即可;分开则要三次;
3. a b c访问同一个远程数据库进行操作,一起则打开关闭一次连接接口;分开则三次;
4. a b c都是空白代码,什么都不做,这样在一起相当于执行一次循环,分开则三次;
5. a b c都是减少N的操作,则case1表较快;或者都是增加i的操作也同样;
6. a b c中至少含有一个break,或者return也一样;则case1肯定快;
case2比case1快:
1. a b c分别有三个不同的锁,case1需要同时满足才能执行;case2则分别满足即可;
2. a b c都是读磁盘操作,分别读三个不同位置的连续磁盘块
3. a b c都把N加了0.5,则case1就是死循环了,或者把i减少0.5也是同样;case2肯定快
有一个开玩笑的就是不在同一个配置的机器上运行,哈哈~