android fps性能分析,Android性能专项FPS测试实践(二)

接上篇

测试指标&范围

搞清楚一些基础概念后,我们需要确定接下来测试需要获取的数据,本次测试除了常规的数据以外,业务方也通过程序埋点输出了一些关注的指标信息,概况起来包括但不限于以下几点:组件初始化时间(业务方埋点)APP启动时间(冷启动、热启动)CPU占用(活动、静默状态)PSS内存占用(活动、静默状态)//不能root手机,所以没有取USS电池温度变化(活动、静默状态)FPS硬件渲染掉帧数单帧渲染平均时间单帧检测处理时间(业务方埋点)OS版本:4.4、5.0、5.1、4.2、4.3、6.0、4.0品牌覆盖:华为、小米、Nexus、VIVO、奇酷、酷派、三星、锤子分辨率覆盖:1920X1080、2560X1440、1280X720、854X480业务场景:针对业务特点进行设置的测试场景,在此不表。

采样策略

在调研了网上各种方案后,个人觉得 @sandman 的方案是最符合我的预期,因此直接拿来使用。方案如下:1. 通过命令: dumpsys SurfaceFlinger | grep "|....|" 获取当前置顶窗口名称2. 历史记录127行数据,按60帧算可记录2.12S数据,从而不用频繁获取。(最终考虑设定1.6S间隔刷新数据。)3. 定期清零重新记录,避免如何分清哪些数据是上次的。命令: dumpsys SurfaceFlinger --latency-clear4. 有刷新则计算帧率,无刷新则不输出数据,有时候取到的fps为1,就是这个原因5. 每次采样数据大于等于1帧则计算FPS,丢帧率,最大帧间隔

6. 针对业务需求,增加了单帧平均渲染时间的统计

具体实现

网上的实现方式大多数都是取自于这里:https://github.com/ChromiumWebApps/chromium/blob/master/build/android/pylib/perf/surface_stats_collector.py掌握python开发的同学可以阅读和学习一下作者的采集思路。针对源代码,有篇博客做了详细的解读,感兴趣的同学可以看这里:http://blog.csdn.net/itfootball/article/details/43084527我采取的实现方式是@sandman的办法,利用shell文件在手机内部获取数据后生成csv文件,再通过adb命令pull到本地进行统计,针对我自己的需求,对shell代码略微做了调整,增加了单帧平均渲染时间的统计,运行效果像这样:

cc05c822f1fd6697f789d264b30281ea.png

这种采样的方式最大的好处就是不用root手机,针对shell代码的解释,由于篇幅太长我就不在这里贴了,大家可以移步这里去看详细的解释:https://testerhome.com/topics/4775各位可以在这里下载完整版工具,工具包中包含了利用python生成HTML报表的代码:https://yunpan.cn/ckcypyNLDAet2 (提取码:005f)那么测试出来的报告大概可以是这样的:

3bc81fe0a9783b89ff3e74d029eeaad7.png

be4a3e34fc4bda07b41135a5d6880431.png

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值