我正在写一篇关于多线程的理学学士论文,参考书目是Anthony Williams的《c++ Concurrency in Action》。它在使用std线程时帮助了我很多,但是有一件事我不确定。阿姆达尔定律的公式为
p (N) = 1/(f + (1 - f)/N)
而我找到的所有其他来源都给出:
p (N) = 1/(1 - f + f/N)
在这两种情况下,p是性能增益因子,f是"串行"的常数分数,独立部分在[0,1]中,N是处理器数(自然数)。
即使函数的水平渐近线在第一种情况下是1/f,在第二种情况下是1/(1 - f),这是一个错误还是我理解错了?
第一个f为串行码的分数,第二个f为并行码的分数。
如果将(1-f)代入任意一个方程中的f,就会得到另一个