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卡顿可能是由于过度绘制过多造成的