0

这是家庭作业。

问题: 一个程序有 20% 的内存访问,50% 的乘法,其余的用于与两者无关的其他函数。如果需要 1.2 的整体加速,那么如果内存访问和乘法都得到同等改进,则需要多少加速。

我想如果我正在使用阿姆达尔定律寻找其中一个或另一个的加速,我想我知道如何做到这一点,但我不确定如何解决这个问题以找到每个问题的加速,如果它们得到同样的改进。

如果它只是在寻找内存访问,我想我会为 x 求解以下方程:

1.2 = 1/[(1 - 0.2) + 0.2/x]

将这两个百分比结合起来并0.2 + 0.5 = 0.7在阿姆达尔定律中使用的关键是什么?

4

1 回答 1

1

假设当前执行时间为 100 秒。

期望的加速是 6/5,这意味着新时间比旧时间应该是 5/6,减少了 16.67% 或 16.67 秒。(这就是阿姆达尔定律的全部内容!)

你知道 20 秒用于内存访问,50 秒用于乘法,30 秒用于其他事情。

“如果两者都得到同等改善”的问题是模棱两可的。这是否意味着两者都减少了相同的绝对量,即每个 16.67 的一半,还是意味着它们按比例减少,16.67 秒的 2/7 来自内存,5/7 来自乘法?

你把它从那里拿走!

顺便说一句:当学者们谈论性能调整时,他们往往会想到只有一页的小程序,其中内存访问和数学运算以及大 O 就是它的全部内容。现实世界的性能调优是非常不同的。它是关于找出软件是如何过度设计的,并使用性能诊断(如分析,但更好)来找出脂肪在哪里,并在多次迭代中将其切除。例子。

于 2014-07-02T21:12:48.213 回答