博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 性能测试实践(三)Cpu
阅读量:5880 次
发布时间:2019-06-19

本文共 2589 字,大约阅读时间需要 8 分钟。

C
pu篇

关于 的Cpu占用率需要注意以下三种情况:

1.空闲状态下的应用CPU消耗情况 简单说这种情况呢就是说被测应用在系统资源非常空闲的情况下的占用率,比如只开一个被测应用

2.中等规格状态下的应用CPU消耗情况 简单说这种情况就是后台已经有几个应用在运行已经并且消耗了系统的一些资源的情况下进行。

3.满规格状态下的应用CPU消耗情况 这个就不要说了,你们懂得!

数据采集方案:

1.

adb shell dumpsys cpuinfo

这里可以看到所有进程的Cpu占用率:

大家看第一个应用CPU占用率68%,这个过程是在用户(user)中花61%的时间,并在内核空间(kernel)花费7.1%的时间。

如果你想筛选出你自己的应用的话可以用下面这一段:

adb shell dumpsys cpuinfo |grep packagename

2.使用top命令:

进入Adb shell

adb shelltop -m 10 -s cpu

可查看占用cpu最高的前10个程序(-t 显示进程名称,-s 按指定行排序,-n 在退出前刷新几次,-d 刷新间隔,-m 显示最大数量)

如果你想筛选出你自己的应用的话可以用下面这一段:

adb shell top -n 1| grep PackageName

拿到这些数据怎么用

1,你可以从代码里面获取:

(dumpsys)

adb shell  dumpsys  cpuinfo
publicstaticStringGetCpu(StringpackageName)throwsIOException{Stringstr3=null;Runtimeruntime=Runtime.getRuntime();Processproc=runtime.exec("adb shell dumpsys cpuinfo  $"+packageName);try{if(proc.waitFor()!=0){System.err.println("exit value = "+proc.exitValue());}BufferedReaderin=newBufferedReader(newInputStreamReader(proc.getInputStream()));StringBufferstringBuffer=newStringBuffer();Stringline=null;while((line=in.readLine())!=null){stringBuffer.append(line+" ");}Stringstr1=stringBuffer.toString();Stringstr2=str1.substring(str1.indexOf(packageName),str1.indexOf(packageName)+28);str3=str2.substring(18,23);}catch(InterruptedExceptione){System.err.println(e);}finally{try{proc.destroy();}catch(Exceptione2){}}returnstr3;}}
(Top)
publicstaticdoublecpu(StringPackageName)throwsIOException{doubleCpu=0;try{Runtimeruntime=Runtime.getRuntime();Processproc=runtime.exec("adb shell top -n 1| grep "+PackageName);try{if(proc.waitFor()!=0){System.err.println("exit value = "+proc.exitValue());}BufferedReaderin=newBufferedReader(newInputStreamReader(proc.getInputStream()));StringBufferstringBuffer=newStringBuffer();Stringline=null;while((line=in.readLine())!=null){stringBuffer.append(line+" ");}Stringstr1=stringBuffer.toString();Stringstr3=str1.substring(str1.indexOf(PackageName)-43,str1.indexOf(PackageName));Stringcpu=str3.substring(0,4);cpu=cpu.trim();Cpu=Double.parseDouble(cpu);}catch(InterruptedExceptione){System.err.println(e);}finally{try{proc.destroy();}catch(Exceptione2){}}}catch(ExceptionStringIndexOutOfBoundsException){System.out.print("请检查设备是否连接");}returnCpu;}
2,直接 adb shell cat进去proc/cpuinfo/下面:
publicString[]getCpuInfo(){Stringstr1="/proc/cpuinfo";Stringstr2="";String[]cpuInfo={"",""};String[]arrayOfString;try{FileReaderfr=newFileReader(str1);BufferedReaderlocalBufferedReader=newBufferedReader(fr,8192);str2=localBufferedReader.readLine();arrayOfString=str2.split("\\s+");for(inti=2;i

取完你可以这么用》:

配合一些场景去采集数据:

这样可以看到每个步骤消耗的资源情况

然后汇总数据分析(最好多取几次求平均值):

转载地址:http://kdjix.baihongyu.com/

你可能感兴趣的文章
runloop与线程的关系
查看>>
[Bzoj2246]迷宫探险(概率+DP)
查看>>
[译] 感受 4px 基线网格带来的便利
查看>>
oracle常用函数
查看>>
MYBATIS
查看>>
详解消息队列的设计与使用
查看>>
iOS 项目优化
查看>>
筛选出sql 查询结果中 不包含某个字符
查看>>
8进制与16进制
查看>>
使用Sqoop从mysql向hdfs或者hive导入数据时出现的一些错误
查看>>
mybatis:Invalid bound statement (not found)
查看>>
电脑中毒的现象
查看>>
django表单操作之django.forms
查看>>
webSocket vnc rfb
查看>>
列表推导式 生成器表达式
查看>>
控制子窗口的高度
查看>>
Linux 防火墙iptables命令详解
查看>>
打造笔记本电脑基地重庆要当全球“老大”
查看>>
处理 Oracle SQL in 超过1000 的解决方案
查看>>
《JAVA与模式》之简单工厂模式
查看>>