一个简易的android帧率测试工具
Posted 测码奔跑
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个简易的android帧率测试工具相关的知识,希望对你有一定的参考价值。
原理
Choreographer是android提供用来同步处理input、animation和draw三个UI操作的类,这个类提供一个回调
实现
首先需要实现Choreographer.FrameCallback接口,在doFrame()方法内实现耗时计算的逻辑
之后,再实现一个开始检测的方法,在页面调用onCreate()方法的时候调用
测试
新版本猫客中的会员+页面重构为native代码,可以对该页面进行性能测试,检验一下效果。以下测试数据在nexus5x上获得。调用startMonitor()之后开始打印日志,可以通过adb logcat查看,部分log如下。
...
01-24 20:11:30.470 21293-21293/com.tmall.wireless E/TMPerformanceUtils: doFrame: 66
01-24 20:11:30.553 21293-21293/com.tmall.wireless E/TMPerformanceUtils: doFrame: 83
01-24 20:11:30.569 21293-21293/com.tmall.wireless E/TMPerformanceUtils: doFrame: 17
01-24 20:11:30.603 21293-21293/com.tmall.wireless E/TMPerformanceUtils: doFrame: 33
01-24 20:11:30.614 21293-21293/com.tmall.wireless D/TMPerformanceUtils: doFrame: 16
...
在连续收集一部分数据之后,将数据导出,得到下图
图中纵坐标为每一帧的渲染时间,红色虚线为16ms分界线,从图中可以看在快速滑动加载分页数据的时间,渲染时间出现抖动,查看代码发现有部分解析数据的代码放在了主线程中,需要优化。 下图是将解析数据的代码移到异步线程之后的耗时,毛刺明显变少,每一帧的最多耗时也明显减少,优化有一定效果。
小结
通过android提供的Choreographer可以编写一个简单的性能检测工具,对页面的流畅度进行检测,不需要引入其它的SDK。但是只能进行简单的渲染时间检测,只能大致判断有性能问题的代码。如果要具体定位到哪些代码有性能问题,就需要借助其它工具了。
更多测试技术文章,微信扫以下二维码,欢迎关注
测码奔跑-让测试技术奔跑起来
以上是关于一个简易的android帧率测试工具的主要内容,如果未能解决你的问题,请参考以下文章
Android 逆向Android 逆向通用工具开发 ( Android 平台运行的 cmd 程序类型 | Android 平台运行的 cmd 程序编译选项 | 编译 cmd 可执行程序 )(代码片段
Android 逆向Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | Visual Studio 中 SDK 和 NDK 安装位置 )(代码片段