文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>编程珠玑读书笔记之代码调优

编程珠玑读书笔记之代码调优

时间:2010-11-03  来源:小培

 

b. 函数,宏和内联函数
  内联函数优先使用,函数次之,宏最后。

c. 顺序搜索
传统算法:
  int search1(t)
      for i = [0,n)
         if x[i] == t
               return i
      return -1;
两个改进点,
1:在数组最后面添加一个标志位,从而可以免除每次循环开始时的判断,完全依靠break跳出循环。
2:将循环展开,一次循环,对个位置检测
   int search3(t)
      x[n] = t; //设置标志位,之前这个位置应该是没有用处的
      for( i = 0;;i+=8)
         if(x[i  ] == t ) break;
         if(x[i+1] == t ) { i+=1; break;}
         if(x[i+2] == t ) { i+=2; break;}
         if(x[i+3] == t ) { i+=3; break;}
         if(x[i+4] == t ) { i+=4; break;}
         if(x[i+5] == t ) { i+=5; break;}
         if(x[i+6] == t ) { i+=6; break;}
         if(x[i+7] == t ) { i+=7; break;}
      if i == n
         return-1
      else
         returni
减少检测数量,展开循环,大概可以降低运行时间60%。循环展开8最好,再大也没有太好的效果。

d. 计算球面距离
   当算法解决出现问题时,考虑采用不同的数据结构表示数据,然后在此基础上进行代码调优。

2. 大手术-二分搜索
   减少比较次数,展开循环到极致
3.原理
   a.效率,不成熟的优化是大量编程灾难的根源。
   b.度量工具,监视性能的陷阱。
   c.设计层面,只有在确信没有更好的解决方案时才考虑进行代码调优。
   d.双刃剑。玩火者,小心自焚。

相关阅读 更多 +
排行榜 更多 +
西安交大通

西安交大通

生活实用 下载
长江云通

长江云通

生活实用 下载
translatez

translatez

生活实用 下载