优化程序性能--概论

摘自《深入理解计算机系统》


编写高效程序需要从以下两点着手:

一、我们需要选择最好的算法和数据结构
二、我们需要编写出编译器能够有效优化以转换代码的源代码

在程序开发和优化的过程中,我们需要考虑代码的编写方式和影响代码运行的关键性因素。通常,程序猿需在实现和维护程序的简单性和程序的运算速度之间权衡;
在算法的编写中,几分钟就可以编写一个简单的插入排序,而编写一个高效的排序算法可能需要一天或者更长的时间进行测试和优化;
在代码上,有些低级别的优化往往会降低程序的可读性和模块性,使程序容易出错,更难以修改和扩展,对一个只会运行一次且产生一组数据的程序,我们应尽能减少编程工作并保证正确性的方式来编写程序就更为重要,对于会在性能非常重要的环境中反复执行的代码,例 网络路由器,通常更广泛的优化会适当一些。


对于理解编译器的能力和局限性是很重要的,如果我们程序中有一点点小小的变动,都会引起编译器优化方法发生很大的变化。有些编程语言相对其他语言变的容易优化。
例:c语言中,有些特性:执行指针运算和强制类型转换的能力,使得对它优化很困难。程序猿经常能够以一种使编译器更容易产生高效代码的方式来编写他们的程序。