2009-01-15 166 views
1

什麼是計算進程執行期間特定時間的總CPU使用率的最佳算法。計算總CPU使用率

我正在使用C++的windows平臺。

回答

0

使用WMI獲得 「PercentProcessorTime」;請注意,這可能會有其自身的性能損失。

如果您正在尋找掐死你的應用程序,更好的方式,它有自己的內部性能指標與具體應用和基於油門上(如屏幕刷新頻率等)

2

GetProcessTimes爲100-納秒分辨率。如果您需要循環時間,請在Vista和更高版本中使用QueryProcessCycleTime

0

不要使用WMI 簡單地用win32的NAPI

+0

呃...這是一個有用的答案。你能否詳細說明一下? – 2009-01-18 13:54:16

0

//聲明
PerformanceCounter cpuCounter = null;

//在構造函數的某個地方初始化..
cpuCounter = new PerformanceCounter();
cpuCounter.CategoryName =「Processor」;
cpuCounter.CounterName =「%Processor Time」;
cpuCounter.InstanceName =「_Total」;

然後得到以%表示的CPU使用率只是調用
cpuCounter.NextValue()

來源:http://zamov.online.fr/EXHTML/CSharp/CSharp_927308.html

0

到獲得用於一個週期的總CPU負載的最簡單的方法是使用GetSystemTimes API。這是一個啓動Windows XP SP1的內核函數。它返回自系統啓動後使用的CPU時間量。因此,在一個時間間隔內獲得的這些值之間的差異會導致該時間間隔內的總CPU使用率。請記住,該函數提供的內核時間包括'空閒'時間,因此必須減去由第一個參數返回的空閒時間。

該函數返回可用的所有內核/處理器的總時間,因此您可能還希望將差值除以從GetSystemInfo獲得的處理器數量。