两个程序块在不同情况下哪个更快

http://coolshell.cn/articles/4162.html

有两个相同功能代码如下,请在在ABC是什么的情况下,请给出三个原因case 1case 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肯定快

 

有一个开玩笑的就是不在同一个配置的机器上运行,哈哈~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值