计算CPU占用率就需要获取系统总的内核时间,用户时间及空闲时间。
其中,空闲时间就是内核空转,所以,内核时间包含空闲时间。
计算公式如下:
运行时间 = 内核时间 + 用户时间 - 空闲时间
间隔时间 = 内核时间 + 用户时间
CPU使用率% = 运行时间 / 间隔时间
C++实现代码如下:
#include <windows.h>
double get_cpu_usage()
{
static FILETIME pre_idle_time;
static FILETIME pre_kernel_time;
static FILETIME pre_user_time;
// 空闲时间
FILETIME idle_time;
// 内核时间
FILETIME kernel_time;
// 用户时间
FILETIME user_time;
BOOL ret = GetSystemTimes(&idle_time, &kernel_time, &user_time);
qint64 idle = CompareFileTime(pre_idle_time, idle_time);
qint64 kernel = CompareFileTime(pre_kernel_time, kernel_time);
qint64 user = CompareFileTime(pre_user_time, user_time);
float rate = (kernel + user - idle) / (1.0*(kernel + user));
pre_idle_time = idle_time;
pre_kernel_time = kernel_time;
pre_user_time = user_time;
return rate;
}