码迷,mamicode.com
首页 > Windows程序 > 详细

Windows下测量cpu利用率的类

时间:2015-11-30 17:55:46      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:

方法参考网上的一段代码,把它改成了类以方便调用,很简单,但是可以一用,哈哈。

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;
}

 

Windows下测量cpu利用率的类

标签:

原文地址:http://www.cnblogs.com/waytofall/p/5007549.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!