簡單粗暴的阿姆達爾定律

2021-08-19 19:22:19 字數 869 閱讀 1796

技術**於生活,技術又改變了生活。

從生活中的例子說起

要完成拖地和燒開水這麼乙個工作, 假設燒開水需要花費 2分鐘, 拖地需要2分鐘, 各佔總時間的50%。 為了趕時間,我叫上朋友一塊幫忙, 因為燒開水的時間不為人所能控制,因此增派人手能做的工作只能是打掃衛生, 此時完成整項工作可提公升的速度為:

可提公升效率倍數: 1/( 0.5 + 0.5/2) = 1.3 倍 , 總完成時長縮短到3分鐘

人手增派到4人的話,

可提公升的效率倍數: 1/ (0.5 + 0.5/4) = 1.6倍, 總完成時長2.5分鐘

假設當增派的人手足夠多時,最理想的情況下也只能是打掃衛生的時間為0, 最理想的可提公升效率的倍數為:1/0.5 = 2倍,最理想的總完成時長為2分鐘。

此時已是極限,如果需要再降低總時間,只能是想辦法降低燒開水的時長了。

將該例子抽象出來形成公式為:

可提公升效率倍數 = 1 / (燒開水所佔時長比例 + 拖地所佔時長比例 /工作人數)

從這個公式可以看出,能提公升效能的幾個指標:

人海戰術,通過增加人手的方式,將可並行處理的工作分解。但是這會有個極限,當達到極限時,即使添再多的人對整體效率來說也是無濟於事的。

反映到我們的程式設計模式裡面就是通過增加cpu個數或是增加執行緒數提公升效能。

想辦法降低燒開水的時間也能使整體效能得到提公升。

反映到我們的程式設計模式裡面就是儘量減少阻塞,減少序列執行的可能。

何謂阿姆達爾定律

看完上面的例子,阿姆達爾定律已基本清楚,他無非也是定義一套公式用來計算程式可提公升的效能倍數。

可提公升效能倍數 = 1/(序列執行時間比 + 並行執行時間比/cpu數)

通過優化1)序列執行時間比 2)增加cpu數 提公升效能。

原創部落格

阿姆達爾定律

阿姆達爾定律可以用來計算處理器平行運算之後效率提公升的能力。阿姆達爾定律因 gene amdal 在 1967 年提出這個定律而得名。絕大多數使用並行或併發系統的開發者有一種併發或並行可能會帶來提速的感覺,甚至不知道阿姆達爾定律。不管怎樣,了解阿姆達爾定律還是有用的。我會首先以算術的方式介紹阿姆達爾...

阿姆達爾定律以及古斯塔夫森定律乾貨

阿姆達爾定律 amdahl 加速比定義 加速比 優化前系統耗時 優化後系統耗時 tn t1 f 1 n 1 f f序列比例 1 f 並行比例 n處理器個數 加速比 t1 tn 優化前耗時 優化後耗時 1 f 1 n 1 f 結論 增加cpu數量並不一定能起到有效的作用,提高系統內可並行的模組比重,合...

Sqlmap簡單粗暴

1 檢查注入點 root kali sqlmap u2 爆所有資料庫資訊 root kali sqlmap u dbs爆當前資料庫資訊 root kali sqlmap u current db3 列出指定資料庫所有的表名 root kali sqlmap u d fujieace tables f...