优化控制结构——读书笔记[Linux程序设计大全]

来源:互联网 发布:java 替换 stringbuild 编辑:程序博客网 时间:2024/05/10 07:52

表达式优化:

1.使用移位替换程序中的乘除法:所有乘法都可以替换成移位的组合,例如 a*13       a<<3 + a<<2 + a;除法的话,只有除数正好是2的n次幂是可以用右移代替

2.常量折叠:其实就是说把常量的计算串计算出来,得出一个常量

3.使用数学公式:如求和公式等

4.存储问题:c中的变量要保存到内存中,相对cpu内部的寄存器操作,访问内存所消耗的时间是很大的。

                       这也是为什么要用  x += 1 替代 x = x + 1的原因。编译器认为后者的等号两边不是一个操作数,所以要寻址两次;

 

分支优化:

1.改变判断顺序:这个要根据实际情况决定,例如,一个统计一篇英文文章中字母,数字,和空格数量的程序,因为英文文章中字母一般会占多数,所以应把是否字母放到前面。

2.使用switch结构:对于定值判断,switch结构可以提高效率,类似于汇编语言

 

循环优化:

1.一次性计算:对于循环中的一次性计算,应当将其放到循环外面。例如,for(int i=0; i<strlen(p);i++),因为每次循环都要计算strlen,而strlen是需要遍历缓冲区的,所以这个计算代价很大。应提到外面。