Android性能测试

来源:互联网 发布:美丽中国网络知识竞赛 编辑:程序博客网 时间:2024/06/05 14:15

Windows系统下的Android性能测试

1.查看cpu利用率

(1)使用dumpsys cpuinfo

adb shell dumpsys cpuinfo | find "com.tencent.mobileqq"(包名)

C:\Users\Administrator>adbshell dumpsys cpuinfo | findstr com.tencent.mm

  1.3%(当前app整个占用cpu比例) 13069/com.tencent.mm:1.3% user (使用情况)+ 0% kernel /faults: 188 minor

  0.1% 21815/com.tencent.mm:tools: 0.1% user +0% kernel / faults: 69 minor

  0% 13762/com.tencent.mm:push: 0% user + 0%kernel / faults: 6 minor

dumpsys cpuinfo 里面是描述cpu的使用详情 且里面的cpu占比是指Cpu所花的时间比比如用户活动消耗时间占比和内耗消耗时间占比

(2)使用top命令

adb shell top -m 10 -s cpu

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

筛选

adb shell top -n 1| grep PackageName

cpu使用情况信息(使用top是实际单进程的Cpu占用)

C:\Users\Administrator>adbshell top -n(刷新次数) 1| findstr com.tencent.mm

13069  0   0%S   104 1395608K 183280K  fg u0_a103 com.tencent.mm

13762  0   0%S    25 1026520K  49988K fg u0_a103  com.tencent.mm:push

14618  0   0%S    15 1009608K  46556K bg u0_a103  com.tencent.mm:exdevice


 

2.流量监控

1)获取当前进程ID(监控所有的进程 )

C:\Users\Administrator>adb shell ps | findstr com.android.browser

u0_a17(uid)    11260(进程号pid)244   1165564 198512 ffffffff 00000000 Scom.android.browser

u0_a17    11360 244  941436 28828 ffffffff 00000000 S com.android.browser:mcs

u0_a17    11378 1    932212 14600 ffffffff 00000000 S com.android.browser:mcs

u0_a17    11719 244  937868 24160 ffffffff 00000000 S com.android.browser:downloads

u0_i7     13138 244  1472696 84960 ffffffff 00000000 S com.android.browser:sandboxed_process0

 

获取进程中的所有流量信息(当前APP流量总值=Receive + Transmit   取两次获取的差值作为APP使用中消耗的流量 )

C:\Users\Administrator>adbshell cat /proc/17776(进程ID)/net/dev

Inter-|   Receive                                                  |  Transmit

 face | bytes      packets errs drop fifo frame compressedmulticast|bytes    packets errs drop fifocolls

ccmni0:52072936   60508    0   0    0     0         0         0  5839287  51291    0    0   0     0

 wlan0(无线网卡):83353367   75824    0  14    0     0         0         0  7752529  73906    0    0   0     0

  p2p0:      0       0    0   0    0     0         0         0      168      2    0    0   0     0

  sit0:      0       0    0   0    0     0         0         0        0      0    0    0   0     0

ccmni1:       0      0    0   0    0     0         0         0        0      0    0    0   0     0

    lo(本地流量):105488043   47016    0   0    0     0         0         0 105488043   47016   0    0    0

ccmni2:       0      0    0    0   0     0          0         0        0      0    0    0   0     0

ip6tnl0:       0      0    0    0   0     0          0         0        0      0    0    0   0     0

 tunl0:      0       0    0   0    0     0         0         0        0      0    0    0   0     0

  ifb0:      0       0    0   0    0     0         0         0        0      0    0    0   0     0

  ifb1:      0       0    0   0    0     0         0         0        0      0    0    0   0     0

 

 

 

3.测试电量(必须将手机切换到非充电状态)

1)查看手机电量信息

adb shelldumpsys battery

adb shell dumpsys OPPO battery set status 1(非2的任意值表示非充电状态  oppo的手机需要加上OPPO标识)


4.获取内存信息

adb shell top -d(命令刷新的频率)

  PID(进程ID)PR CPU%(CPU利用率) S  #THR    VSS(虚拟耗用内存)     RSS(实际使用物理内存) PCYUID      Name

29194         0  5% R     1   1504K   500K     shell    top

  254        0   4% S    16 198868K 26720K  fg media    /system/bin/mediaserver

  250        0   3% S    28 188612K 11624K     system   /system/bin/surfaceflinger

将信息保存到电脑

E:\pythoncode\automatedTest\lunchTime>adbshell top -d 1 > power.txt

E:\pythoncode\automatedTest\lunchTime>typepower.txt(查看文件)

E:\pythoncode\automatedTest\lunchTime>typepower.txt| findstr(过滤获得所有关于com.android.phone的内存信息) com.android.phone

保存到手机

shell@R7:/storage/emulated/0$ top -d 1>power.txt(每一秒钟刷新一次)

127|shell@R7:/storage/emulated/0$ cat power.txt(查看文件)

127|shell@R7:/storage/emulated/0$ cat power.txt | grep cn.com.open.mooc(过滤获得所有关于cn.com.open.mooc的内存信息)

获取指定的内存信息

C:\Users\Administrator>adb shell top | findstr com.tencent.mm(包名)
C:\Users\Administrator>adb shell top | findstr u0_a103(uid)
#查看单个应用程序最大内存限制

C:\Users\Administrator>adbshell getprop | findstr heapgrowthlimit

[dalvik.vm.heapgrowthlimit]:[256m]

#应用启动后分配的初始内存
 adb shell getprop|findstr dalvik.vm.heapstartsize
|[dalvik.vm.heapstartsize]: [8m]
#单个java虚拟机最大的内存限制
 

 

C:\Users\Administrator>adbshell getprop | findstr dalvik.vm.heapsize

[dalvik.vm.heapsize]:[512m]

USS – Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)

USS 是针对某个进程开始有可疑内存泄露的情况, 是一个程序启动了会产生的虚拟内存,一旦这个程序进程杀掉就会释放!
没错。不过USS需要通过root的手机。一般没有root的手机我们可以获取PSS。而PSS的话可以通过如下命令来获取

C:\Users\Administrator>adb shell dumpsys meminfocom.tencent.mm | findstr TOTAL

       TOTAL   130126   114152   10608     4388   329816  295050    28677

过度渲染

FPS(frame persecond-每秒的帧数)

设置--开发者选项--GPU呈现模式分析--在屏幕上显示为条形图

绿线:基准值16毫秒

每个柱形图为每一帧的耗时(如果每一帧的耗时大部分位于基准值下则说明页面基本流畅)

 

 

过度渲染:描述的是屏幕上的某个像素在同一帧的时间内被绘制了多少次(先关闭GPU呈现模式分析)

设置--开发者选项--GPU过度绘制

APP卡顿可能是由于过度绘制过多造成的