码迷,mamicode.com
首页 > 其他好文 > 详细

for循环优化策略

时间:2014-08-01 10:51:37      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:for   代码   时间   ad   优化   c   return   函数   

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:这个是在云大大的书中看到的,记录下来以免自己忘记,这种汇编级别的优化策略值得借鉴

for循环优化策略,布布扣,bubuko.com

for循环优化策略

标签:for   代码   时间   ad   优化   c   return   函数   

原文地址:http://blog.csdn.net/helloarm123456/article/details/38332297

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!