Android | 性能优化 | 流畅性 - 第02篇 - 帧率
Android | 性能优化 | 流畅性 - 第02篇 - 帧率
当用户碰到流畅性的问题时,大多数会体现为帧率的下降,本篇通过6个问题来回答关于帧率的疑问(Power By ChatGPT 3.5)。
什么是帧率?
帧率(Frame Rate)是指显示设备在一秒内能够显示的图像帧数。
在电影、视频、游戏、应用和其他形式的动态媒体中,帧率是非常重要的一个参数。较高的帧率可以带来更加流畅和自然的运动效果,而较低的帧率则可能导致画面卡顿和不连贯的感觉。
帧率通常以每秒帧数(Frames Per Second,FPS)来表示,例如电影常用的帧率是每秒24帧,游戏和应用则常用60帧或以上的帧率。在数字媒体领域,帧率也可以影响视频文件的大小和编解码质量。
为什么是60FPS?
Android 设备通常使用 60 FPS 的屏幕刷新率,这是由于历史原因和技术因素决定的。
首先,60 FPS 的屏幕刷新率已经成为了行业标准,并且被广泛应用于电视、计算机和移动设备等多种设备上。这主要是因为 60 FPS 能够提供流畅的视觉体验,同时又不会对设备的处理器和电池造成过大的压力。
其次,60 FPS 的屏幕刷新率也符合人类视觉感知的特性。根据研究,人眼对于连续的运动画面,最佳的视觉感知帧率为每秒 50 到 60 帧,超过这个范围的帧率对于人眼来说并没有太大的区别。因此,60 FPS 的屏幕刷新率是最符合人类视觉感知的帧率之一。
另外,对于移动设备来说,60 FPS 的屏幕刷新率也是一种折衷方案,能够平衡性能和电池寿命。更高的帧率会导致更高的处理器负载和更快的电池消耗,而较低的帧率则可能影响视觉效果和用户体验。因此,60 FPS 的屏幕刷新率成为了 Android 设备的默认帧率。
60FPS意味着什么?
Android 的 60 FPS 意味着每秒可以在屏幕上均匀的更新 60 张图像帧,也就是16.67ms要更新一帧,这是一种流畅的图形显示效果。在应用程序和游戏中,帧率是非常重要的因素之一,它可以影响到应用程序和游戏的性能和用户体验。
如果应用程序或游戏的帧率低于 60 FPS,用户就可能会感到卡顿、不流畅和延迟的感觉。而如果应用程序或游戏能够稳定地以每秒 60 帧的速度进行渲染,那么用户就会体验到流畅、自然的图形显示效果,这可以提高用户体验,增强应用程序或游戏的吸引力。
同时,60 FPS 对于游戏等需要快速响应的应用程序来说尤为重要。较高的帧率可以使用户获得更快的反应速度和更加精准的操作体验。因此,许多游戏都会优化其性能以达到每秒 60 帧的帧率,以提供最佳的游戏体验。
Android 的 60 FPS 意味着优化的应用程序和游戏能够提供最佳的图形效果和用户体验,同时也是开发人员和用户期望的一种标准。
HZ和FPS的关系?
HZ 和 FPS 都是衡量图形显示的重要指标,它们之间的关系如下:
- HZ 是指屏幕的刷新率,表示每秒钟屏幕能够刷新多少次。是硬件概念。单位为 Hz(赫兹)。
- FPS 是指图像帧率,表示每秒钟能够显示多少个图像帧。是软件概念。单位为 FPS(帧每秒)。
一般来说,HZ 和 FPS 是直接相关的。如果屏幕的刷新率为 60 Hz,那么每秒钟屏幕就能够刷新 60 次。如果应用程序或游戏以每秒 60 帧的速度进行渲染,那么每秒就能够显示 60 个图像帧,这就达到了最佳的图形显示效果。
然而,在某些情况下,应用程序或游戏的帧率可能会低于屏幕的刷新率。在这种情况下,屏幕只能够显示部分图像帧,因此会出现一些帧丢失的情况,导致图像显示不连续和不流畅。这种情况下,需要进行优化,使得应用程序或游戏的帧率与屏幕的刷新率相匹配,以达到最佳的图形显示效果和用户体验。
HZ 和 FPS 的关系非常紧密,它们之间的匹配是实现最佳图形显示效果的关键之一。
60FPS、90FPS、120FPS之间有什么区别?
FPS(Frames Per Second)指的是每秒钟显示的画面帧数。在Android中,60FPS、90FPS、120FPS是不同的刷新率选项,它们之间的区别在于每秒钟刷新的次数不同。
当一个应用程序以60FPS的速度运行时,它每秒钟会显示60个帧。同样的,当一个应用程序以90FPS或120FPS的速度运行时,它每秒钟会显示90个或120个帧。
更高的刷新率可以提高屏幕的流畅度和响应速度,让用户感觉到更快的操作和更加流畅的动画效果。但是,更高的刷新率也会消耗更多的电量、也会对应用的质量有更高的要求,因此需要权衡考虑。
不同帧率的更新间隔时间:
- 60FPS:每秒可以在屏幕上均匀的更新 60 张图像帧,也就是1/60 ~= 16.67 ms 要更新一帧。
- 90FPS:每秒可以在屏幕上均匀的更新 90 张图像帧,也就是1/60 ~= 11.11 ms 要更新一帧。
- 120FPS:每秒可以在屏幕上均匀的更新 120 张图像帧,也就是1/60 ~= 8.33 ms 要更新一帧。
每帧所做工作?
对于Android的每一帧,都有很繁重的任务要完成才能保证应用的流畅性,如下:
- Vsync - 处理VSYNC信号
- Input - 处理输入事件
- Animation - 处理动画事件
- Perform Traversals - 处理遍历工作(Layout)
- Draw - 处理绘制
- Sync - 处理渲染数据
- SwapBuffer - 刷新图像
引用
- https://www.youtube.com/watch?v=CaMTIgxCSqU
- https://androidperformance.com/2019/05/27/why-60-fps
- https://developer.android.com/training/testing/performance?hl=zh-cn
- https://www.youtube.com/watch?v=WH9AFhgwmDw&hl=zh-cn
版权声明
本文采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可