1. 程式人生 > >理解性能提升By阿姆達爾定律(Amdahl‘s law)

理解性能提升By阿姆達爾定律(Amdahl‘s law)

加速比 阿姆達爾定律 性能優化 並行程序 多線程

我們在進行系統優化完成後,怎麽評估優化的效果呢?最簡單的方式是測量系統優化後耗時和優化前耗時的比例,這也叫加速比S(Speed Up)。
阿姆達爾定律在理解性能優化具有重要指導意義。優化前系統總耗時To(old),優化後系統總耗時Tn(new),加速比S=To/Tn。
通過下面這張圖理解:(α為待提速部分原來耗時比例)
技術分享圖片

S = To/Tn = 1 / (1-α)+α/k
當待優化部分提速無窮倍(k接近無窮大,不耗時間)時候,S = 1 / (1-α) , 也就是說,比如α=60%,如果系統中60%的部分能提速到不花時間,那麽獲得最高的加速比仍然只有1/0.4=2.5,系統才能提速2.5倍。也就是Amdahl‘s law的主要觀點:要想顯著加速整個系統,必須提升全系統大部分的速度。


我們在刻畫並行程序的時候,理想情況是隨著cpu核數增加,期望運行時間會線性下降。也就是說,期望線程數加一倍,運行時間就會減一半。
如圖:
實際情況:
技術分享圖片

理想情況:
技術分享圖片

關鍵刻畫性能提升的指標是加速比,舊時間/新時間,隨著線程增加,時間對應減少,實際情況,隨著線程增加,運行時間可能會增加,因為有了線程上下文切換的開銷。

參考:
阿姆達爾定律: https://en.wikipedia.org/wiki/Amdahl%27s_law
加速比: https://en.wikipedia.org/wiki/Speedup

理解性能提升By阿姆達爾定律(Amdahl‘s law)