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;
    }
  • 相关阅读:
    UWP取出图片主色调
    UWP上可用的GB2312编码
    嵌入的资源 和 Resource
    WPF 斜角border
    .net core初试 --- 控制台程序
    Python初学手记----在window系统中安装环境
    我的第一个网络爬虫 C#版 福利 程序员专车
    使用FFMpeg命令行录屏推rtmp流
    WPF制作表示透明区域的马赛克画刷
    WPF之坑——surface触控失灵之谜
  • 原文地址:https://www.cnblogs.com/waytofall/p/5007549.html
Copyright © 2011-2022 走看看