优化程序方法

 

首先提醒大家一句,再好的语句上的优化也比不上算法上的优化所带来的巨大效益,所以我觉得对这方面不太熟悉的人都应该买本讲数据结构与算法的书来看看。在第八章讲述了几种常用的算法,如果你感兴趣可以看看。

下面就转入正题,讲一讲一般的优化技巧吧:

(1)使用内联函数。

 

       (2)展开循环。

              for (i = 0; i < 100; i++) 

             {

                 do_stuff(i);

             }

         可以展开成: 

for (i = 0; i < 100; ) 

      {

                 do_stuff(i); i++;

                 do_stuff(i); i++;

                 do_stuff(i); i++;

                 do_stuff(i); i++;

                 do_stuff(i); i++;

             }

 

       (3)运算强度减弱。

              例如如果有这样一段程序:

             int x = w % 8;

             int y = x * 33;

              float z = x/5;

             for (i = 0; i < 100; i++) 

             {

                 h = 14 * i;

                 cout<<h;

             }

 

         上面的程序这样改动可以大大加快速度:

int x = w & 7;

             int y = (x << 5) + x;  //<<比+的运算优先级低!

              float z = x*0.2;

             for (i = h = 0; i < 100; i++)

             {

                 cout<<h;

                 h += 14;

             }

 

       (4)查表。这种方法挺有用。比如说我们定义了一个函数f(x)可以返回x*x*x,其中x的范围是0~1,精度为0.001,那么我们可以建立一个数组a[1000],a[t*1000]存储的是预先计算好的t*t*t的值,以后调用函数就可以用查找

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值