一、简介
1. 过度绘制:某些组件在屏幕像素点上绘制次数超过一次
2. 帧率:屏幕刷新率
3. 帧方差:屏幕刷新帧间隔方差
二、GPU测试项
1. 界面过度绘制
2. 屏幕滑动帧速率
3. 屏幕滑动平滑度
三、GPU测试方法
3.1 Show GPU Overdraw
开发者选项-调试GPU过度绘制-显示过度绘制区域(只有Android 4.2及以上版本的手机才具备该功能)
不同颜色代表含义(无色:无过度绘制,即该像素点只绘制1次;蓝色:1x过度绘制,即该像素点绘制了2次;绿色:2x过度绘制;浅红:3x过度绘制;红色:4x过度绘制)
验收标准:不允许出现黑色像素;不允许存在4x过度绘制;不允许存在面积超过屏幕1/4区域的3x过度绘制(淡红色区域)
3.2 Profile GPU Rendering
法一:开发者选项-GPU呈现模式分析-在屏幕上显示条形图,只要不超过屏幕绿线,都可以视为足够流畅。当响应速度大幅增加,曲线瞬间突破绿线时也不能说明系统不流畅
各android系统下不同颜色代表的含义:
- android 4.x:蓝色-代表绘制时间,即创建和更新display lists的时间;红色-代表执行时间,即系统进行2D选软Display list的时间;橙色-代表处理时间,即CPU等待GPU完成渲染处理的时间
- android 5.x:新增紫色-代表渲染线程写入资源所需时间
- android 6.x:变成9种颜色,将渲染过程中的几大步骤进一步细分,可以通过Android Studio上的GPU Monitor可以看到各个颜色含义更新
- Swap Buffers:对应原来的橙色,表示处理任务的时间,线程越高,表示GPU做的事情越多
- Command Issue:对应原来的红色,表示执行任务的时间,为了将内容绘制到屏幕上,Android 需要使用Open GL ES 的API接口来绘制显示列表,红色线条越高表示需要绘制的视图更多。
- Sync & Upload:表示的是准备当前界面上有待绘制的图片耗费的时间,为了减少该段区域的执行时间,可以减少屏幕上的图片数量或者是缩小图片的大小。
- Draw:对应原来的蓝色,表示测量和绘制视图列表所需要的时间,蓝色线条越高表示每一帧要更新很多视图,或者View的onDraw方法中做了耗时操作。
- Measure/Layout:表示布局的onMeasure与onLayout所花费的时间,一旦时间过长,就需要仔细检查自己的布局是不是存在严重的性能问题。
- Animation:表示计算执行动画所需要花费的时间,包含的动画有ObjectAnimator,ViewPropertyAnimator,Transition等,一旦这里的执行时间过长,就需要检查是不是使用了非官方的动画工具或者是检查动画执行的过程中是不是出发了读写操作等。
- Input Handling:表示系统处理输入事件所耗费的时间,粗略等于对时间处理方法所执行的时间。一旦执行时间过长,意味着在处理用户的输入时间的地方执行了复杂的操作。
- Misc Time/Vsync Delay:表示在主线程执行了太多的任务,导致UI渲染跟不上vSync的信号而出现掉帧的情况;出现该线条的时候,可以在log中看到这样的日志:I/Choreographer(*): Skipped XXX frames! The application may be doing too much work on its main thread
法二:开发者选项-GPU呈现模式分析--在 adb shell dumpsys gfxinfo 中
重启应用后,在应用的页面上做滑动,终端通过命令“ adb shell dumpsys gfxinfo 包名 >d:\fps.txt” 获取到对应的帧渲染日志文件,在txt文件中找到Profile data in ms这部分数据,可以把数据copy到excel中以图标的形式进行查看。
- Draw:创建显示列表(display lists,记录所有view对象的绘制指令)的时间开销。
- Process:执行显示列表中绘制指令的时间,UI视窗中View数量越多,需要执行的绘画命令就越多。
- Execute:将一帧图像交给合成器compositor的时间,这部分占用的时间通常比较小。
- Prepare:UI Thread传送数据给Render Thread所用的时间。
3.3 GPU View Updates
开发者选项-显示GPU视图更新。主要查看view的更新以及redraw的区域大小。
3.4 GPU Monitor
Android Studio 1.4之后的版本中集成了GPU Monitor,手机需为debug版本。
GPU Monitor的监控结果与GPU呈现模式分析中在手机屏幕上显示的柱状图一致。
3.5 GPU 厂商提供的工具
高通开发了两个能够检测GPU的工具Adreno Profiler、Trepn Profiler,但是仅仅支持使用了高通CPU/GPU的移动设备...