黑马程序员技术交流社区
标题: 初探百度Android性能测试之流畅度测试(一) [打印本页]
作者: Android_Robot 时间: 2016-9-7 14:42
标题: 初探百度Android性能测试之流畅度测试(一)
本帖最后由 Android_Robot 于 2016-10-26 15:15 编辑
初探百度Android性能测试之流畅度测试(一)
二、流畅度测试
流畅度测试简单的来说就是Android页面绘制。Android系统每秒60hz,也就是大约每16ms刷新一次界面。但是在我们使用APP过程中,经常会看到页面有卡顿,或者说丢帧的现象。也就是说可能此刻两个页面绘制的时间差超过0.1S(人眼视觉残留0.1S)。总的来说,就是页面
原理分析
在确定衡量指标之前,我们先来研究一下Android的UI更新机制。
2.1 Android如何绘制UI?
关于Android是如何更新UI,相信已经有很多文章介绍其中的步骤以及过程,大体上可以用下图来展示:
从图中可以看到无论那条路走下去始终都由SurfaceFlinger来控制最后的更新。
在Android版本更新过程中,发现在Jelly Bean中Google加入了一个Project Butter,用来解决严重影响Android口碑的问题之一“UI流畅性差”的问题。而Project Butter中主要引入了三个核心元素:VSYNC(垂直同步)、Triple Buffer和Choreographer。
2.2 从VSYNC开始
VSync是Vertical Synchronization(垂直同步)的缩写,是一种在PC上很早就广泛使用的技术,可以简单的把它认为是一种定时中断。而在Android 4.1(JB)中已经开始引入VSync机制。
上图所示是VSync机制下的绘制过程。从上图可以看出,CPU和GPU的处理时间都少于一个VSync的间隔,即16.6ms。如果每个间隔都有绘制的情况下,当前的FPS即为60帧。
当CPU和GPU处理时间都很慢,或因为其他的原因,如在主线程中干活太多,那么就会出现如下图这样的状况。
从上图可以看到,CPU和GPU的处理时间因为各种原因都大于一个VSync的间隔(16.6ms),所以在第二个VSync还在处理1区域的绘制时,不可能实现理论上的FPS60,同时也出现了丢帧(SF: Skipped Frame)情况。
为了便于理解,上图用的是双Buffer机制的情况,实际上Android 4.1引入了Triple Buffer,所以当双Buffer不够用时,Triple Buffer丢帧的情况如下图所示。
VSync机制就像是播放动画片(60帧/s)。每次都会播放画面,有的时候有人偷懒了,机器坏了,就会出现播放速度降低的状况。我们把这个播放速度叫做流畅度。
2.3 从FPS&丢帧到流畅度(SM: SMoothness)
实际上在很多Android的App中,很少有需要不断地去绘制的场景,很多时候页面都是静态的。也就是会出现这样的状况,虽然1s中VSync的60个Loop不是每个都在做绘制的工作,FPS会比较低,但并不代表这个时候程序不流畅(如我将App放着不动,实测FPS为1)。所以FPS较低并不能代表当前App在UI上界面不流畅,而1s内VSync这个Loop运行了多少次更加能说明当前App的流畅程度。所以,下面这2个指标比FPS更能代表当前的App是否处于流畅的状态。同样这2个指标更加能够量化App卡顿的程度:
1)丢帧(SF: Skipped Frame):如上图2所示情况应该在16.6ms完成工作却因各种原因没做完,占了后n个16.6ms的时间,相当于丢了n帧。
2)流畅度(SM: SMoothness):和丢帧相对,在VSync机制中1s内Loop运行的次数。
和丢帧相对1s内有60个Loop因为某几次工作时间超过了16.6ms(丢帧),这样Loop就无法运行60次(理论最大值)。
当流畅度越小的时候说明当前程序越卡顿。
其他精华资源推荐:
作者: 小沧月 时间: 2016-9-7 15:32
6666666666
作者: 孙洪勇 时间: 2016-9-7 18:58
求黑马币一枚,大谢
作者: 小超超 时间: 2016-9-7 21:51
支持支持
作者: Zzh94520 时间: 2016-9-8 22:42
好好好好。。。。。
作者: 左右.律 时间: 2016-9-8 23:36
好帖,赞到不行
作者: a65912555 时间: 2016-9-8 23:43
顶顶顶~~
作者: 邓显俊 时间: 2016-9-9 12:46
赞一个,赞一个
作者: 橘子哥 时间: 2016-9-9 16:32
好厉害,不错
作者: chensc 时间: 2016-9-9 20:08
学习学习!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |