CPU在占用率计算上会用到2个值:1.某段时间内Android系统CPU总的使用时间totalCPUTime;2.被测试app某段时间自身使用CPU的时间appCPUTime;
所以得出公式如下:
appCPU占用率 =(( appCPUTime2-appCPUTime1)/(totalCPUTime2-toalCPUTime1)*100;
在获取totalCPU值之前,我们需要了解Android系统中,每个app都会被分配一个进程Pid,通过包名可以获取app对应的Pid。
接下来,我们通过实践得出具体的cpu数值,需要准备条件有:1.配置好的android环境变量;2.手机数据线连接好电脑;3.AndroidStudio运行某一应用在手机上打开;
在命令行中我们输入adb shell 回车得出如下:
然后接着输入命令:ps,如图
根据包名找到app对应的Pid是1856
或者也可以输入ps | grep yourpackage,直接看到
u0_a635 1856 249 1077972 45532 ffffffff 00000000 S
接下来获取totalCPU时间片段:
可以看出我的手机有8个CPU,每个CPU或多或少使用一下,其实根据cpu这玩意不好定位到代码问题,分析性能有点扯淡!(抱怨一下,继续往下分析)其中结果第一样就是cpu总的占用时间片段
cpu 2416912 12623 1795385 5741362 25566 142 62690 0 0 0
把不为的数字加在一起是当前时间片段占用的总时间totalCPUTime
接下来获取appCPUTime,根据之前的到的Pid,输入如下命令:
在结果中用红色箭头标注的是app使用的2个时间片段,只需加起来就可得到appCPUTime。(通过空格分割成为数组[13],[14])
应为测试CPU我们肯定不是求某个瞬时的值,而是一个连续的值,所以可以在程序中写个定时器,每隔1秒钟,算出这两个CPU的值,然后根绝开头说的公式就可以得出某一段时间的CPU连续占用率的曲线了
appCPU占用率 =(( appCPUTime2-appCPUTime1)/(totalCPUTime2-toalCPUTime1)*100;
网友评论