2012-07-25 59 views
0

我有一個單線程控制檯應用程序。單線程應用程序使用多少CPU?

我很困惑CPU使用率的概念。如果一個好的單線程應用程序使用〜100%的CPU使用率(因爲它是可用的),或者它不應該使用大量的CPU使用率(因爲它可能會導致計算機變慢)?

我做了一些研究,但還沒有找到一個答案,我的困惑。我是一名學生,仍在學習,所以任何反饋意見將不勝感激。謝謝。

回答

4

這取決於程序需要的CPU。如果它需要做很多工作,那麼在一段時間內使用全部內核是很常見的。如果它花費大部分時間等待輸入,它自然傾向於使用較少的CPU。我說「不太頻繁」而不是「更少」,因爲:

單線程程序在任何給定時間運行或不運行,因此它們總是使用一個CPU的100%或0%核心。似乎只使用50%或30%的程序或者其他任何實際上只是平衡計算工作期和等待輸入期的程序。像硬盤這樣的設備與CPU相比非常慢,因此一個從磁盤讀取大量數據的程序將比使用大量數據的程序佔用更少的CPU資源。

這是正常的程序來使用100%的CPU有時,甚至經常很長一段時間,但如果你不需要它,它是毫不客氣地用它(即busylooping)。這種行爲擠出了可能使用CPU的其他程序。

硬盤也一樣。人們忘記了硬盤也是一個有限的資源,主要是因爲任務管理器沒有硬盤使用率的百分比。與處理器不同,很難判斷硬盤使用率佔總數的百分比,因爲磁盤訪問沒有固定的速度。然而,在磁盤上移動1GB數據需要比使用CPU將1GB數據移動到內存中花費更長的時間,並且HDD硬盤的性能影響與CPU硬盤的性能影響一樣壞或者更差(它們傾向於減慢你的系統沒有像任何CPU使用情況一樣發生,你可能已經看到過了)

很有可能你最初編寫的任何小型學術程序都會在短時間內使用一個核心,然後等待。在命令提示符處提示輸入數字等簡單的東西就是等待中的一部分,而後來進行學術研究的任何操作都是活躍的部分。

+0

我的程序正在做一些文件解析,它不會等待任何用戶輸入。那麼在那種情況下,我應該期望我的程序使用100%的CPU使用率?那是對的嗎 ? :) – blenzcoffee 2012-07-25 22:43:59

+0

從文件讀取涵蓋在此答案,請務必閱讀第二段的結尾。只要程序具有CPU並且不等待HDD中的數據,它就以100%運行。 – Wug 2012-07-25 22:45:37

3

這取決於它在做什麼。不同類型的操作有不同的需求。

沒有非主觀方式來回答這個問題在整個板是蘋果。

這是真的,唯一的答案是「應該只使用必要的CPU的量做的工作,並沒有更多的。」

換句話說,優化儘可能多的,你可以和合理。一般來說,CPU越低越好,執行速度越快,崩潰就越少,而用戶的煩惱就越少。

0

通常情況下,比如預測天氣這樣的算法很繁重的任務將不得不由OS來管理,因爲它將需要所有的CPU時間,因爲它將被允許運行(直到它完成)。另一方面,具有靜態用戶界面的圖形應用程序(例如用於存儲少量用於記錄保存的數據的Windows窗體應用程序)應該要求非常低的cpu使用率,因爲它主要是等待用戶做某事。