程序的优化方法

    首先提醒大家一句,再好的语句上的优化也比不上算法上的优化所带来的巨大效益,所以我觉得对这方面不太熟悉的人都应该买本讲数据结构与算法的书来看看。

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

    (1)  使用内联函数。

    (2)  展开循环。

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

    {

        do_stuff(i);

    }

    可以展开成: 

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

    {

        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(int 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(int 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的值,以后调用函数就可以用查找。

文章出处:http://blog.csdn.net/manplus/archive/2006/04/12/660105.aspx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值