在执行流程期间,在特定时间计算总CPU使用率的最佳算法是什么。
我在C ++中使用Windows平台。
答案 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()
答案 6 :(得分:0)
获取一段时间内总CPU负载的最简单方法是使用GetSystemTimes API。这是从Windows XP SP1开始可用的内核功能。它返回自系统启动以来使用的CPU时间量。因此,在间隔期间获得的这些值之间的差异将产生该间隔的总CPU使用率。
请记住,此函数提供的内核时间包括'idle'时间,因此您必须减去第一个参数返回的空闲时间。
该函数返回所有可用核心/处理器的总时间,因此您可能还希望将增量除以从GetSystemInfo获得的处理器数量。