zoukankan      html  css  js  c++  java
  • Windows下测量cpu利用率的类

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

    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;
    }
  • 相关阅读:
    设备树(Device Tree)
    深度Linux Deepin系统安装教程使用体验
    Qt Creator的安装与Qt交叉编译的配置
    移植tslib和Qt5.6到三星s5pv210开发板
    Linux下读取RFID卡号(C串口编程)
    如何移植openwrt系统
    如何在Qt Creator中添加库文件和头文件目录
    Qt Creator中如何选择某个子项目为启动项目
    QT中子目录调用另一个子目录
    在Qt项目中如何添加一个已有的项目作为子项目
  • 原文地址:https://www.cnblogs.com/waytofall/p/5007549.html
Copyright © 2011-2022 走看看