阿姆达尔定律是用来表示处理器平行运算后效率提高的能力。T(N)=B + (T-B)/N 其中B为不可平行运算的时间,T为运算须要的总时间,N为线程或者CPU数,那么T(N)为并行因子为N时的执行时间的总时间。算法
参考资料:缓存
阿姆达尔定律网络
虽然阿姆达尔定律容许你并行化一个算法的理论加速比,可是不要过分依赖这样的计算。在实际场景中,当你优化或并行化一个算法时,能够有不少的因子能够被考虑进来。优化
内存的速度,CPU缓存,磁盘,网卡等可能都是一个限制因子。若是一个算法的最新版本是并行化的,可是致使了大量的CPU缓存浪费,你可能不会再使用x N个CPU来得到x N的指望加速。若是你的内存总线(memory bus),磁盘,网卡或者网络链接都处于高负载状态,也是同样的状况。线程
咱们的建议是,使用阿姆达尔定律定律来指导咱们优化程序,而不是用来测量优化带来的实际加速比。记住,有时候一个高度串行化的算法赛过一个并行化的算法,由于串行化版本不须要进行协调管理(上下文切换),并且一个单个的CPU在底层硬件工做(CPU管道、CPU缓存等)上的一致性可能更好。内存