引言
你能获得的对程序最大的加速比,就是当你第一次让它工作起来的时候。
—— John K.Ousterhout
软件(或程序)最主要目标,是在所有可能的情况下都正确工作,一个运行得很快但是给出错误结果的软件是没有任何价值的。
另一方面,在很多情况下,让程序运行得更快也是很重要的。比如资源受限的嵌入式系统,对响应时间有要求的实时系统,或者一个计算量非常大的海量任务处理系统,都需要程序运行得足够快。
而让软件或程序运行得更快的技术,就是软件性能优化技术。
软件性能优化,是指在不改变硬件的前提下,通过软件的等价变换获得更高的执行速度
在本系列文章中,将从软件性能测量与分析、性能优化方法和技术实践等方面,谈一谈软件性能优化的相关问题。
Amdahl 定律与局部优化
首先我们来看一个及其重要的定律:Amdal 定律。
Gene Amdahl,计算领域的先驱之一,做出了一个关于提高系统一部分性能的效果的简单但是富有洞察力的观察,这个观察现在被称为Amdahl定律。
考虑一个系统,其执行某个任务需要的时间为 Told 。假设这个系统中的某部分程序的运行时间占用 Told 的百分比为 α ,而我们将这部分程序的性能提高了 k 倍。也就是说,这一部分程序原来需要时间