首先提醒大家一句,再好的语句上的优化也比不上算法上的优化所带来的巨大效益,所以我觉得对这方面不太熟悉的人都应该买本讲数据结构与算法的书来看看。在第八章讲述了几种常用的算法,如果你感兴趣可以看看。
下面就转入正题,讲一讲一般的优化技巧吧:
(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的值,以后调用函数就可以用查找