浅谈阿姆达尔定律!不太明白的看这里!
其内容为:速度的提升受程序中串行部分的限制,所谓串行部分,是指程序中不能并行执行的部分。现在让我们看一个简单的例子。有一个程序由五个部分组成,每个部分占用 100 个单位时间。这里,我们假设第一部分、第三部分和第五部分是串行的,其中不包含任何并行处理。我们又假设第二部分和第四部分含有数据和任务并行处理。执行这个程序最初需要 500 个单位时间。如果我们改变第 2 部分和第4 部分的运行方式,让它们在两个处理器上运行,则这两个部分只需要 50 个单位时间。如此一来,执行整个程序只需要 400 个单位时间,也就是说,速度提高了 25%。我们继续假设有 4 个处理器,则第 2 部分和第 4 部分的执行时间缩短为 25 个单位时间,让我们再来看看速度的提升。由于我们有四个处理器处理同样的工作,这两个部分的执行时间变为 25 单位时间。这样一来,整个程序的执行时间就缩短到了 350 个单位时间,也就是说,速度提升了 40%。
现在,阿姆达尔定律的重点在于,串行部分的执行时间不会缩短。试想一下,我们有许多处理器,可以把那两个部分的执行时间缩短到几乎为零。但因为有串行部分的存在,整个程序的执行时间仍为 300 个单位时间。这就是阿姆达尔定律的关键所在。从根本上说,您将受到程序代码中串行部分的限制。如果用阿姆达尔定律来预测这个简单的例子,结果是无论您有多少处理器,您最多只能把速度提高 70%。