指标背景流畅度,顾名思义是用户感知使用App页面时的流畅情况,“App卡不卡”,这是用户最直接的感受。 帧率&刷新频率首先需要了解到两个概念: 刷新频率(Refresh Rate)代表屏幕在一秒内刷新操作的次数,这取决于硬件的固定参数,例如60HZ。 帧率(Frame Rate)代表GPU在一秒内绘制操作的帧数,例如常见的24fps,60fps,单位是fps(每秒帧数),很多游戏里面也会有这个指标。 24fps&60fps现在电影行业默认的规则帧率是需要24fps,除了一些极个别的电影超高帧率之外(如李安的比利林恩.中场战事达到超高帧率120fps),辣么有的同学就问了:是不是帧率越高越好,这里可以给到你肯定的回答:是的!就像显示器的分辨率一样,之前认为1080p足够了,现在用到了4K,5K之后才发现以前的真没法看。当然支持高帧率也需要对应的硬件设备,emm..话题跑偏了,回到Android流畅度上来,现在Android平台App或者是游戏普遍需要达到60fps用户肉眼才能感觉到“不卡”。咦?不是24fps吗?那么问题来了,为什么电影只需要24fps就能是流畅的效果,而App/游戏需要达到60fps? 动态模糊首先小伙伴们可以看下这张图,设计功力较渣,大家见谅 第一部分为电影物体运动轨迹,不理解,没关系,再来看下这张图 wtf???并不是电影不高清,而且主角在激烈的战斗啊!!! 帧间隔/垂直同步/Vsync说到帧间隔这个名词大家可能比较陌生,垂直同步相信很多玩游戏的小伙伴在游戏的设置菜单有见过,那么他是用来做什么的呢? 可以看到在电影播放的时候,每帧的间隔时间都是相等的,过度非常平滑。 丢帧虽然开启了垂直同步能够保证帧间隔时间相等,但是能够保证每帧都能够及时的渲染出来吗?并不能,来看下面这张图: 系统会每隔16ms去发送Vsync信号通知CPU/GPU可以开始渲染工作了,为什么是16ms?机智如你应该能想到60fps的倒数就是16.67ms(省略后面的小数点)。如果要能够达到60fps的话,那么就要求每一帧都应该在16ms之内绘制完毕,否则就出现了右边图里面的情况-丢帧!16ms之内没有完成该帧的绘制,那么就必须要等到下次系统的Vsync信号过来了,中间经过的时间就是16ms*2(大致为34ms)。而且丢帧也是App卡顿的根本原因!!! 好了,关于流畅度的解析就先到这里,下篇再给大家讲解怎么监控指标以及怎么测试的问题。 来源:http://www./content-4-186851.html |
|