一种通过代码(cmd命令行)准确获取cpu的使用率的方法
项目需要获取cpu的使用率,还需要跟任务管理器保持一致.
先是百度了一大圈,说是用GetSystemTimes这个api,来获取cpu总时间和空闲时间,然后做减法,每一段时间循环计算来实现的。
下面是代码:
然后发现,跟任务管理器显示偏差很大,然后就去搜索原因,百度了一圈也没找到,都是类似的解决,没人说出个所以然来,最后在stackoverflow找到一个靠谱的答案,原文:
相关截图:
大意是讲taskmgr(任务管理器)是超线程感知的。假设您有 2 个物理内核,总共有 4 个逻辑内核。将2个内核置于满负荷状态,任务列表将显示100%,而您的方法将显示50%,当所有4个逻辑内核都填满时,任务列表仍将显示100%,然后您的方法也将显示100%。
文中也没给解决方案,于是继续搜索。最后在stack大佬的帮助下,找到了这篇文章:
截图:
大意是讲,使用了错误的参数。使用“Processor Information”而不是“Processor”。
结合之前找到的命令:
稍作修改为:
试了下果然可行,数据什么的都很准确,如下图:
至此,基本上算是可以交差了。
不过在实现的过程中发现,做C++,面向百度编程已经不行了,必须要面向谷歌编程了。国内C++相关的干货实在太少,虽然天下文章一大抄,但是无脑抄就不太好了。