一个简易的android帧率测试工具

Posted 测码奔跑

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个简易的android帧率测试工具相关的知识,希望对你有一定的参考价值。

原理

Choreographer是android提供用来同步处理input、animation和draw三个UI操作的类,这个类提供一个回调一个简易的android帧率测试工具

实现

首先需要实现Choreographer.FrameCallback接口,在doFrame()方法内实现耗时计算的逻辑一个简易的android帧率测试工具

之后,再实现一个开始检测的方法,在页面调用onCreate()方法的时候调用一个简易的android帧率测试工具

测试

新版本猫客中的会员+页面重构为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  
...

在连续收集一部分数据之后,将数据导出,得到下图

一个简易的android帧率测试工具图中纵坐标为每一帧的渲染时间,红色虚线为16ms分界线,从图中可以看在快速滑动加载分页数据的时间,渲染时间出现抖动,查看代码发现有部分解析数据的代码放在了主线程中,需要优化。 下图是将解析数据的代码移到异步线程之后的耗时,毛刺明显变少,每一帧的最多耗时也明显减少,优化有一定效果。

一个简易的android帧率测试工具

小结

通过android提供的Choreographer可以编写一个简单的性能检测工具,对页面的流畅度进行检测,不需要引入其它的SDK。但是只能进行简单的渲染时间检测,只能大致判断有性能问题的代码。如果要具体定位到哪些代码有性能问题,就需要借助其它工具了。


更多测试技术文章,微信扫以下二维码,欢迎关注

测码奔跑-让测试技术奔跑起来

以上是关于一个简易的android帧率测试工具的主要内容,如果未能解决你的问题,请参考以下文章

Android 位图帧率问题

android在特定片段中隐藏工具栏

fwrite视频写入帧率测试(不用测了。。)

Android简易音乐重构MVVM Java版 -搭建项目

Android 逆向Android 逆向通用工具开发 ( Android 平台运行的 cmd 程序类型 | Android 平台运行的 cmd 程序编译选项 | 编译 cmd 可执行程序 )(代码片段

Android 逆向Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | Visual Studio 中 SDK 和 NDK 安装位置 )(代码片段