`

WinCE CPU使用率计算 测试工具

    博客分类:
  • C++
 
阅读更多
转自
http://blog.csdn.net/janvi/article/details/8218617




原先的文章丢到回收站,弄不回来。这里是工具(代码)的资源链接:

http://download.csdn.net/source/2305979
http://download.csdn.net/source/2420987
很久没有整理了,这两个发重复了。

很久没有再接触WinCE了,这里简单讲一下计算方法。

内存使用情况的获取没什么好说的,现成的API。不过只能获取全局的内存使用状态。每个进程的内存使用情况暂时没什么好办法。曾经我试过遍历进程的虚拟空间,利用块的状态(提交,保留)综合来计算。肯定是不准,实际的数据也不太对。记得魅族的M8上的任务管理器可以显示每个进程的内存使用情况。应该是定制系统的时候做的功能,底层的东西我也不明白,有思绪的不妨给我发个信息,让我也长长见识。

CPU的使用率,没有现成的API。相信很多人也想得到方法,只是没有人去动手一下而已。CPU的使用率,说白了就是这个公式:非idle进程使用时间/统计时间。于是我们可以取一个统计单位时间,并计算出非idle时间。统计时间取1000ms,使用GetIdleTime()获取idle的时间,那么CPU使用率为:100 * (1000 - GetIdleTime())/1000。开始这个工具的第一版是这么实现的,后续当然又碰到了问题。有的平台定制的时候,没有实现GetIdleTime(),这种情况下GetIdleTime()返回0,造成我们计算出的CPU使用率一直是100%。另外一种办法就是统计所有线程的时间(CPU基本调度单位),做累加得到所有非idle时间。实作步骤为:

1.使用CreateToolhelp32Snapshot()等工具遍历所有线程

2.使用GetThreadTimes()获取每个线程的时间

3.累加所有线程时间,计算使用率

实际汇总的时间有些误差,所以控制不要让CPU范围超出[0-100]。具体见代码,cpp的名字,c语言的心。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics