编写高效程序:
1.适当的算法和数据结构
2.编译器能够有效优化以转换成高效可执行代码的源代码
3.处理运算量特别大的计算,将一个任务分成多个部分
程序优化:
1.消除不必要的工作
2.利用处理器提供的指令级并行能力,同时执行多条指令
研究程序的汇编代码是理解编译器以及产生的代码会如何运行的最有效手段之一。
5.1优化编译器的能力和局限性
编译器会考虑各种特殊情况如内存别名使用(两个指针指向一个位置),采取最安全的优化。
5.2表示程序性能
引入度量标准:每元素的周期表
5.3程序实例
5.4消除循环的低效率
程序实例中每次循环都要求向量的长度,可以保存起来,只需求一次长度。
代码移动:识别要执行多次但是计算结果不会改变的计算
5.5减少过程调用
每次循环都要调用get_vec_element来获取下一个向量元素。对每个向量引用,函数要把i与循环边界比较,会造成低效率。可以改成下图那样
5.6消除不必要的内存引用
dest中的值从内存读出再保存,很浪费,因为下次读取的值就是上次保存的值。可以改成下图