pu密集型與io密集型

2021-10-24 15:13:33 字數 1127 閱讀 6060

cpu密集型(cpu-bound)

cpu密集型也叫計算密集型,指的是系統的硬碟、記憶體效能相對cpu要好很多,此時,系統運作大部分的狀況是cpu loading 100%,cpu要讀/寫i/o(硬碟/記憶體),i/o在很短的時間就可以完成,而cpu還有許多運算要處理,cpu loading很高。

在多重程式系統中,大部份時間用來做計算、邏輯判斷等cpu動作的程式稱之cpu bound。例如乙個計算圓周率至小數點一千位以下的程式,在執行的過程當中絕大部份時間用在三角函式和開根號的計算,便是屬於cpu bound的程式。

cpu bound的程式一般而言cpu佔用率相當高。這可能是因為任務本身不太需要訪問i/o裝置,也可能是因為程式是多執行緒實現因此遮蔽掉了等待i/o的時間。

io密集型(i/o bound)

io密集型指的是系統的cpu效能相對硬碟、記憶體要好很多,此時,系統運作,大部分的狀況是cpu在等i/o (硬碟/記憶體) 的讀/寫操作,此時cpu loading並不高。

i/o bound的程式一般在達到效能極限時,cpu佔用率仍然較低。這可能是因為任務本身需要大量i/o操作,而pipeline做得不是很好,沒有充分利用處理器能力。

cpu密集型 vs io密集型

我們可以把任務分為計算密集型和io密集型。

計算密集型任務由於主要消耗cpu資源,因此,**執行效率至關重要。python這樣的指令碼語言執行效率很低,完全不適合計算密集型任務。對於計算密集型任務,最好用c語言編寫。

第二種任務的型別是io密集型,涉及到網路、磁碟io的任務都是io密集型任務,這類任務的特點是cpu消耗很少,任務的大部分時間都在等待io操作完成(因為io的速度遠遠低於cpu和記憶體的速度)。對於io密集型任務,任務越多,cpu效率越高,但也有乙個限度。常見的大部分任務都是io密集型任務,比如web應用。

io密集型任務執行期間,99%的時間都花在io上,花在cpu上的時間很少,因此,用執行速度極快的c語言替換用python這樣執行速度極低的指令碼語言,完全無法提公升執行效率。對於io密集型任務,最合適的語言就是開發效率最高(**量最少)的語言,指令碼語言是首選,c語言最差。

總之,計算密集型程式適合c語言多執行緒,i/o密集型適合指令碼語言開發的多執行緒。

原文:

計算密集型 IO密集型 資料密集型

2 計算密集型任務雖然也可以用多工完成,但是任務越多,花在任務切換的時間就越多,cpu執行任務的效率就越低,所以,要最高效地利用cpu,計算密集型任務同時進行的數量應當等於cpu的核心數。3 計算密集型任務由於主要消耗cpu資源,因此,執行效率至關重要。python這樣的指令碼語言執行效率很低,完全...

CPU 密集型 計算密集型,IO密集型

1 cpu 密集型 計算密集型 計算密集型,顧名思義就是應用需要非常多的cpu計算資源,在多核cpu時代,我們要讓每乙個cpu核心都參與計算,將cpu的效能充分利用起來,這樣才算是沒有浪費伺服器配置,如果在非常好的伺服器配置上還執行著單執行緒程式那將是多麼重大的浪費。對於計算密集型的應用,完全是靠c...

cpu密集型 計算密集型 io密集型 簡介

cpu密集型 cpu bound cpu密集型也叫計算密集型,指的是系統的硬碟 記憶體效能相對cpu要好很多,此時,系統運作大部分的狀況是cpu loading 100 cpu要讀 寫i o 硬碟 記憶體 i o在很短的時間就可以完成,而cpu還有許多運算要處理,cpu loading很高。在多重程...