for循环优化策略

double getSumNumber(){
       double list[100] = {0};
       double sum = 0;
       for(int i = 0; i < 100; ++i){
          sum += list[i];
       }
     return sum;
}

double getSumNum(){
       double list[100] = {0};
      double sum1 = 0, sum2 = 0;
     for(int i = 0; i < 100; i += 2){
       sum1 += list[i];
       sum2 += list[i + 1];
    }
   return sum1 + sum2;
}

虽然代码返回的都是0;但是体现一种优化的策略。

  24:  for(int i = 0; i < 100; ++i){
01296D7E  mov         dword ptr [i],0 
01296D88  jmp         getSumNumber+69h (1296D99h) 
01296D8A  mov         eax,dword ptr [i] 
01296D90  add         eax,1 
01296D93  mov         dword ptr [i],eax 
01296D99  cmp         dword ptr [i],64h 
01296DA0  jge         getSumNumber+8Dh (1296DBDh)

上面是汇编编码。每次for循环都会有一个判断 cmp 指令。函数1会有判断100次,而函数2只会判断50次。

这样代码就减少了判定次数。算是用空间换时间吧。

PS:这个是在云大大的书中看到的,记录下来以免自己忘记,这种汇编级别的优化策略值得借鉴

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值