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密集型適合指令碼語言開發的多執行緒。
推薦閱讀
面經:史上最全j**a多執行緒面試題及答案
什麼是CPU密集型 IO密集型?
cpu密集型 cpu bound cpu密集型也叫計算密集型,指的是系統的硬碟 記憶體效能相對cpu要好很多,此時,系統運作大部分的狀況是cpu loading 100 cpu要讀 寫i o 硬碟 記憶體 i o在很短的時間就可以完成,而cpu還有許多運算要處理,cpu loading很高。在多重程...
什麼是CPU密集型 IO密集型?
原文 cpu密集型 cpu bound cpu密集型也叫計算密集型,指的是系統的硬碟 記憶體效能相對cpu要好很多,此時,系統運作大部分的狀況是cpu loading 100 cpu要讀 寫i o 硬碟 記憶體 i o在很短的時間就可以完成,而cpu還有許多運算要處理,cpu loading很高。在...
什麼是CPU密集型 IO密集型?
cpu密集型 cpu bound cpu密集型也叫計算密集型,指的是系統的硬碟 記憶體效能相對cpu要好很多,此時,系統運作大部分的狀況是cpu loading 100 cpu要讀 寫i o 硬碟 記憶體 i o在很短的時間就可以完成,而cpu還有許多運算要處理,cpu loading很高。在多重程...