背景
记录工作中做的一个性能测试:
- app本身有自定义action,通过adb命令发送intent可以启动需要测试的功能。
- app会在生成一个status文件记录不同功能的执行状况,可以通过查看该文件判断功能是否执行完毕。
- 记录执行期间的CPU、Memory、Time-consuming的情况,和上一版本对比是否有明显差异。
查看指标的命令或工具
CPU
/proc/$pid/stat:提供CPU活动时间原始数据,需要自己计算 CPU 使用百分比- Android Profiler和
top:提供实时CPU使用百分比,由/proc/stat计算得到。Android Profiler的分母是所有CPU,top的分母是1个CPU dumpsys cpuinfo $pid:提供大概5分钟里的CPU使用百分比ps -p $pid -o pcpu:提供从进程开始到现在的平均CPU使用百分比
所以如果肉眼观察的话就选择Android Profiler,如果自己写脚本记录的话就用top。
Memory
- PSS:
dumpsys meminfo, Andriod Profiler - RSS:
ps -o rss - 参考介绍:Android 系统内存耗用:VSS/RSS/PSS/USS 的介绍 - 专栏 - 声网 RTE 开发者社区 (rtcdeveloper.cn)
- 参考介绍:Android内存分析命令 - Gityuan博客 | 袁辉辉的技术博客
测试脚本
tomtomjerry/android_perf_test (github.com)

Android Profiler
例如,某个自启动功能在app刚启动时内存占用太高,和动画渲染抢占资源,所以修改为延时1分钟再启动。从Android Profiler可以看出新版本app在1分钟处的memory明显降低,符合预期。
老版本:
新版本: