Qt笔记(六十七)之获取 计算CPU使用率

104 篇文章 128 订阅

一.前言
楼主最近在获取电脑设备的一些信息,今天想获取和计算cpu的使用率,于是分享记录下

二.核心代码
主要是利用了GetSystemTimes这个系统API

void getCpu()
{
	// FILETIME 是一个用两个32位字节表示时间值的结构体
	//  dwLowDateTime 低位32位时间值。
	//  dwHighDateTime 高位32位时间值
	static FILETIME preidleTime;
	static FILETIME prekernelTime;
	static FILETIME preuserTime;

	FILETIME idleTime;
	FILETIME kernelTime;
	FILETIME userTime;

	// 三个参数分别为 cpu空闲时间 内核进程占用时间 用户进程占用时间
	// 函数执行成功返回true 执行失败返回false
	bool k = GetSystemTimes(&idleTime, &kernelTime, &userTime);
	qDebug() << "GetSystemTimes:" << k;
	if (!k)
		return "";

	quint64 x, y;
	int idle, kernel, user;

	x = (preidleTime.dwHighDateTime << 31) | preidleTime.dwLowDateTime;	
	y = (idleTime.dwHighDateTime << 31) | idleTime.dwLowDateTime;
	idle = y - x;

	x = (prekernelTime.dwHighDateTime << 31) | prekernelTime.dwLowDateTime;
	y = (kernelTime.dwHighDateTime << 31) | kernelTime.dwLowDateTime;
	kernel = y - x;

	x = (preuserTime.dwHighDateTime << 31) | preuserTime.dwLowDateTime;
	y = (userTime.dwHighDateTime << 31) | userTime.dwLowDateTime;
	user = y - x;

	int cpuPercent = (kernel + user - idle) * 100 / (kernel + user);

	preidleTime = idleTime;
	prekernelTime = kernelTime;
	preuserTime = userTime;

	QString msg = QString("CPU : %1%")
		.arg(cpuPercent);
	return msg;
}

三.其他
1.该核心代码是来自http://www.qtcn.org/bbs/read-htm-tid-60613.html
楼主只是去理解,并添加自己理解到的注释
2.该代码中计算百分比的方式很准确,起码在win下是这样的,linux下楼主还没有对应的环境,所以没有测试,但是他的计算方式和我理解的稍微不同,后续还需要再理解为啥是这样计算的

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值