阿姆达尔定律(Amdahl’s Law),它描述了在对系统的某个部分进行加速时,该部分对整体系统性能的影响,取决于该部分的重要性和加速程度。
原书给的例子不太好懂,下面是一个更好懂的例子。
例子:汽车加速性能
假设你有一辆汽车,你想要研究:如果加速"A模块"的性能,会对整体驾驶时间有多大影响。
初始驾驶时间:Told = 100 秒(假设初始驾驶需要100秒)。
A部分重要性比例:a = 0.2(假设这个部分的重要性在整体性能中占20%)。
A部分性能提升比例:K = 4(这个部分提升到了原来的4倍)。
根据定律,我们可以计算新的驾驶时间:
Tnew = (1 - a) * Told + (a * Told) / K
备注:
- (1 - a) * Told 指的是:除了A部分之外的其他部分,占用的时间
- (a * Told) 指的是:A部分提升前占用的时间
- (a * Told) / K 指的是:A部分提升后占用的时间
将具体的数据代入:
Tnew = (1 - 0.2) * 100 + (0.2 * 100) / 4
Tnew = 80 + 5
Tnew = 85 秒
在这个例子中,假设我们是公司老板,让很多人费尽心思研发突破,然后提升了汽车中占比只有20%的 “A部分”,把时间从20秒降低到了5秒,把这个性能提升到原来的4倍【20 / 5 = 4】
但是,总的驾驶时间只从100秒减少到了85秒,这是因为我们改进的 “A部分”,在整体性能中重要性只占20%,所以改进它,对整体影响不大。
如果你是公司老板,假设 “B部分” 在整体性能影响中占80%,你让研发人员费劲心力,只让这部分性能提升到了原来的【2倍】
Tnew = (1 - b) * Told + (b * Told) / K = (1 - 0.8) * 100 + (0.8 * 100) / 2 = 60秒。
但是,总的驾驶时间只从100秒减少到了60秒,这是因为我们改进的 “B部分”,在整体性能中重要性占了80%,所以改进它,对整体影响大。