Windows下测量cpu利用率的类
2015-11-30 16:26
393 查看
方法参考网上的一段代码,把它改成了类以方便调用,很简单,但是可以一用,哈哈。
cpu_usage.h
cpu_usage.cpp
cpu_usage.h
#include <windows.h> class CpuUsage { public: CpuUsage(); void init(); // get cpu usage rate from the last invoke of the function or init int get(); private: bool inited_; ULONGLONG cpu_time_; ULONGLONG cpu_idle_time_; };
cpu_usage.cpp
#include "cpu_usage.h" CpuUsage::CpuUsage(): inited_(false) {} void CpuUsage::init() { FILETIME ft_sys_idle; FILETIME ft_sys_kernel; FILETIME ft_sys_user; ULARGE_INTEGER ul_sys_idle; ULARGE_INTEGER ul_sys_kernel; ULARGE_INTEGER ul_sys_user; GetSystemTimes(&ft_sys_idle, /* System idle time */ &ft_sys_kernel, /* system kernel time */ &ft_sys_user); /* System user time */ CopyMemory(&ul_sys_idle, &ft_sys_idle, sizeof(FILETIME)); CopyMemory(&ul_sys_kernel, &ft_sys_kernel, sizeof(FILETIME)); CopyMemory(&ul_sys_user, &ft_sys_user, sizeof(FILETIME)); cpu_time_ = ul_sys_kernel.QuadPart + ul_sys_user.QuadPart; cpu_idle_time_ = ul_sys_idle.QuadPart; inited_ = true; } // get cpu usage rate from the last invoke of the function or init int CpuUsage::get() { if (!inited_) return -1; FILETIME ft_sys_idle; FILETIME ft_sys_kernel; FILETIME ft_sys_user; ULARGE_INTEGER ul_sys_idle; ULARGE_INTEGER ul_sys_kernel; ULARGE_INTEGER ul_sys_user; GetSystemTimes(&ft_sys_idle, /* System idle time */ &ft_sys_kernel, /* system kernel time */ &ft_sys_user); /* System user time */ CopyMemory(&ul_sys_idle, &ft_sys_idle, sizeof(FILETIME)); CopyMemory(&ul_sys_kernel, &ft_sys_kernel, sizeof(FILETIME)); CopyMemory(&ul_sys_user, &ft_sys_user, sizeof(FILETIME)); ULONGLONG interval = ul_sys_kernel.QuadPart + ul_sys_user.QuadPart - cpu_time_; int use_rate = (interval - (ul_sys_idle.QuadPart - cpu_idle_time_)) * 100 / interval; cpu_time_ = ul_sys_kernel.QuadPart + ul_sys_user.QuadPart; cpu_idle_time_ = ul_sys_idle.QuadPart; return use_rate; }
相关文章推荐
- 第14周实践项目(3)-验证二叉排序树
- 十四周 项目一-折半查找
- 第十一周项目1 验证算法1层次算法遍历的验证
- C语言中字符的输入输出以及计算字符个数的方法详解
- 第八周项目3-顺序串算法
- Spring事务管理的三种方式
- 常用软件的归档
- Javascript:谈谈JS的全局变量跟局部变量
- hdu 1251统计难题
- 冒泡排序
- android studio 环境配置
- How to complete the task in Scrapy tutorial
- 第十四周——项目一(验证算法)
- 数据结构实践——图遍历算法实现
- 第15周 项目1—哈希表及其运算的实现
- 项目1.2—验证算法
- 连接svn的问题
- 第十四周 项目3 分块查找
- HTML5 Canvas(画布)图像处理
- 第14周 项目1(1)-折半查找