计算总CPU使用率

时间:2009-01-15 22:49:23

标签: c++ windows

在执行流程期间,在特定时间计算总CPU使用率的最佳算法是什么。

我在C ++中使用Windows平台。

7 个答案:

答案 0 :(得分:2)

GetProcessTimes,分辨率为100纳秒。如果您想要循环时间,请在Vista及以上版本中使用QueryProcessCycleTime

答案 1 :(得分:1)

英特尔VTune是分析CPU资源的绝佳工具:http://www.intel.com/cd/software/products/asmo-na/eng/239144.htm

答案 2 :(得分:1)

让我向您推荐这篇精彩的文章:http://www.codeproject.com/KB/threads/Get_CPU_Usage.aspx

我相信你会发现它很有用。

答案 3 :(得分:0)

使用WMI获取“PercentProcessorTime”;请注意,这可能会有自己的性能损失。

如果您希望限制应用程序,可以更好地拥有特定于应用程序的内部性能指标,并根据该指标进行限制(例如屏幕刷新率等)

答案 4 :(得分:0)

不要使用WMI 只需使用win32 NAPI

答案 5 :(得分:0)

//声明
PerformanceCounter cpuCounter = null;

//在构造函数中的某处初始化..
cpuCounter = new PerformanceCounter();
cpuCounter.CategoryName =“处理器”;
cpuCounter.CounterName =“%Processor Time”;
cpuCounter.InstanceName =“_ Total”;

然后以%为单位获取CPU使用率,只需调用
cpuCounter.NextValue()

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

答案 6 :(得分:0)

获取一段时间内总CPU负载的最简单方法是使用GetSystemTimes API。这是从Windows XP SP1开始可用的内核功能。它返回自系统启动以来使用的CPU时间量。因此,在间隔期间获得的这些值之间的差异将产生该间隔的总CPU使用率。

请记住,此函数提供的内核时间包括'idle'时间,因此您必须减去第一个参数返回的空闲时间。

该函数返回所有可用核心/处理器的总时间,因此您可能还希望将增量除以从GetSystemInfo获得的处理器数量。