安卓性能模式:为什么是60帧每秒?

听Colt McAnlis讲why 60fps:

在应用性能的世界里,你总能听见有人讨论60帧每秒和16毫秒的界限。但是你有没有停下来问,为什么是这些数值?如果你是严肃对待性能问题的开发人员,这就是一个值得研究的技术细节。

让我们回想一下,要知道,这些大部分都和硬件——人体硬件有关。人的眼睛和相机不同,眼睛并不会向大脑发送这个世界的截图。相反,你的大脑会持续的处理你的眼睛传送的可视图像。但是这里并没有帧和截图的概念。我们这种动作是由帧组合的概念,实际上是由一个骇客破解。因为如果能足够快速的显示图像,我们就可以欺骗人类大脑,让他们以为眼前的帧就是动作。

这里我们需要注意的就是图像显示速度的快慢很大地影响了动作的流畅性,最少你会需要10-12帧每秒的速度才能让人类大脑相信这些图像是一个动作。

24帧每秒时,人眼会看到流畅的画面,但这要多亏运动模糊这些视觉效果。另外,24帧每秒对电影行业来说非常重要,因为它对展现动作来说已经足够了,同时制作成本也足够低,能满足电影制作的预算。这也就是为什么在过去50年里,你所看到的大部分电影,都是24帧每秒的。现在30帧每秒对电影来说已经足够,但是没有华丽的影院效果,它并没有那么使人信服。

事实上60帧每秒才是最棒的,不需要那些视觉效果,却依然精彩流畅。大部分人接受不了比这更高的帧数。现在值得注意的是,针对图片的非连续性,人眼的辨识力还是非常高的。例如,如果你以60帧每秒的速度运动,然后时不时突然降至20帧每秒,人眼就会察觉到这里面的不流畅性。这会导致用户的紧张和不适应。

作为应用开发人员,你的目标很清晰,那就是保证你的应用在60帧每秒,并在用户体验期间保持这个速度不变。60帧每秒意味着作为一个开发人员你要在16毫秒每帧(1000ms / 60frame = 16.666ms/frame)的情况下完成所有的工作,包括输入、计算、网络传输和渲染等。只有这样,你的应用才会有流畅的用户体验。

事实上,很多问题会导致你的帧会超过16毫秒,为了找到这些问题并解决他们,你要查看其它的Android性能模式内容,别忘了加入我们的Google+社区一起参加讨论。请记住:保持淡定,分析代码,性能很重要。

视频地址:https://www.youtube.com/watch?v=CaMTIgxCSqU&index=25&list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE

posted @ 2019-05-17 15:48  zhengna  阅读(1680)  评论(0编辑  收藏  举报