当前位置:首页 > 操作系统 > Windows

Windows下测量cpu利用率的类

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

cpu_usage.h

#include <windows.h>

<span>class</span><span> CpuUsage {
</span><span>public</span><span>:
    CpuUsage();
    </span><span>void</span><span> init();
    </span><span>//</span><span> get cpu usage rate from the last invoke of the function or init</span><span>int</span><span>get</span><span>();

</span><span>private</span><span>:
    </span><span>bool</span><span> inited_;
    ULONGLONG cpu_time_;
    ULONGLONG cpu_idle_time_;
};</span>

cpu_usage.cpp

#include <span>"</span><span>cpu_usage.h</span><span>"</span><span>

CpuUsage::CpuUsage(): inited_(</span><span>false</span><span>) {}

</span><span>void</span><span> 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(</span>&ft_sys_idle, <span>/*</span><span> System idle time </span><span>*/</span>
        &ft_sys_kernel,          <span>/*</span><span> system kernel time </span><span>*/</span>
        &ft_sys_user);           <span>/*</span><span> System user time </span><span>*/</span><span>

    CopyMemory(</span>&ul_sys_idle, &ft_sys_idle, <span>sizeof</span><span>(FILETIME));
    CopyMemory(</span>&ul_sys_kernel, &ft_sys_kernel, <span>sizeof</span><span>(FILETIME));
    CopyMemory(</span>&ul_sys_user, &ft_sys_user, <span>sizeof</span><span>(FILETIME));

    cpu_time_ </span>= ul_sys_kernel.QuadPart +<span> ul_sys_user.QuadPart;
    cpu_idle_time_ </span>=<span> ul_sys_idle.QuadPart;

    inited_ </span>= <span>true</span><span>;
}

</span><span>//</span><span> get cpu usage rate from the last invoke of the function or init</span><span>int</span> CpuUsage::<span>get</span><span>() {
    </span><span>if</span> (!<span>inited_)
        </span><span>return</span> -<span>1</span><span>;

    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(</span>&ft_sys_idle, <span>/*</span><span> System idle time </span><span>*/</span>
        &ft_sys_kernel,          <span>/*</span><span> system kernel time </span><span>*/</span>
        &ft_sys_user);           <span>/*</span><span> System user time </span><span>*/</span><span>

    CopyMemory(</span>&ul_sys_idle, &ft_sys_idle, <span>sizeof</span><span>(FILETIME));
    CopyMemory(</span>&ul_sys_kernel, &ft_sys_kernel, <span>sizeof</span><span>(FILETIME));
    CopyMemory(</span>&ul_sys_user, &ft_sys_user, <span>sizeof</span><span>(FILETIME));

    ULONGLONG interval </span>= ul_sys_kernel.QuadPart + ul_sys_user.QuadPart -<span> cpu_time_;
    </span><span>int</span> use_rate = (interval - (ul_sys_idle.QuadPart - cpu_idle_time_)) * <span>100</span> /<span> interval;

    cpu_time_ </span>= ul_sys_kernel.QuadPart +<span> ul_sys_user.QuadPart;
    cpu_idle_time_ </span>=<span> ul_sys_idle.QuadPart;

    </span><span>return</span><span> use_rate;
}</span>

 

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


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!

相关教程推荐

其他课程推荐