Slatency是整个任务执行延迟的理论上的加速;
s是受益于系统资源改进的部分任务执行速度的提高;
p是整个任务执行时间中与受益于改进前系统资源的改进有关的部分的百分比。
Slatency = 1/[(1-p) + (p/s)]
这都是理论上的,我想什么时候不适用。估计CPU性能有多精确?

最佳答案

通常,当您要调整程序的某些部分时,您会制作一个微基准来单独测试。

这并不总是反射(reflect)作为完整程序的一部分运行时的行为。 (即,在您要调整的部分执行之间进行其他工作,而不是紧缩循环。)

例如如果您发现sin(x)计算很昂贵,并替换了它们的查找表,则可能会在微基准测试中获胜,因为当连续调用时,一个足够小的表在高速缓存中仍然很热,而中间没有其他工作。类似地,微基准测试是在分支预测启动的情况下并且在没有代码缓存压力的情况下测量性能的(这会使循环展开看起来比实际情况更好)。

但这只是意味着您对s的估计对于整个程序的功能来说是错误的,并不是说阿姆达尔定律不正确。这只是使用错误的一种情况。

但是,这确实可以为您的问题提供真正的答案:

以导致更多缓存或TLB丢失,分支错误预测等方式加速程序的一部分确实违反了Amdahl的定律。

关于linux - 阿姆达尔定律有多精确?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40812917/

10-10 08:04