[系统级] 获取CPU使用率

利用windows系统函数GetSystemTimes()间接获得,GetSystemTimes()可获得系统自开机以来处于内核态的CPU时间、处于用户态的CPU时间以及空闲时间,分别,在500毫秒的时间差内分别计算这三种时间的时间差(记作ΔkernelTime、ΔuserTime和ΔidleTime)。

__int64 CompareFileTime ( FILETIME time1, FILETIME time2 )
{
	__int64 a = time1.dwHighDateTime << 32 | time1.dwLowDateTime ;
	__int64 b = time2.dwHighDateTime << 32 | time2.dwLowDateTime ;
	return (b - a);
}

int GetCPUUse()
{
	FILETIME preidleTime, prekernelTime, preuserTime;
	FILETIME idleTime, kernelTime, userTime;

	GetSystemTimes(&preidleTime, &prekernelTime, &preuserTime);
	Sleep(500);
	GetSystemTimes(&idleTime, &kernelTime, &userTime);

	int idle = CompareFileTime( preidleTime,idleTime);
	int kernel = CompareFileTime( prekernelTime, kernelTime);
	int user = CompareFileTime(preuserTime, userTime);

	return (kernel +user - idle) *100/(kernel+user);
}


参考文章:http://hi.baidu.com/widebright/item/16c050f11d8d6410d6ff8c41

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值