2-性能分析-android-FPS
一:FPS概念理解
关于帧率前相关图片信息理解
https://blog.csdn.net/weixin_42914706/article/details/124080924
序列 | 理解 |
---|---|
1 | 60 fps 的意思是说,画面每秒更新60次 |
2 | 60次更新,是要均匀更新的,不是说一会快,一会慢,那样视觉上也会觉得不流畅 |
3 | 每秒60次,也就是 1/60 ~= 16.67 ms 要更新一次 |
1> 基本概念
60 fps: 指屏幕的刷新率,是针对硬件的;移动设备上一般使用60HZ,移动设备对于功耗的要求更高,提高手机屏幕的刷新率,对于手机来说,逻辑功耗会随着频率的增加而线性增大,同时更高的刷新率,意味着更短的TFT数据写入时间,对屏幕设计来说难度更大
1. 流畅度的衡量指标
流畅度衡量指标 | 表示 | 解释 |
---|---|---|
帧率fps | Frames Per Second | 每秒钟填充图像的帧率16.6ms 刷新一次,系统为了配合屏的刷新频率,将 Vsync 的周期也设置为 16.6 ms,现在设备存在120FPS屏幕刷新率,所以游戏与硬件相互适配 |
丢帧SF | Skipped frame-60FPS | 通过systrace 抓取只有55帧率,为丢帧情况,主观感觉就是卡了 , 尤其是帧率波动 , 用户的感知会更明显. 引起丢帧的原因非常多,有 (硬件层面的 、软件层面的 、App 自身的问题),要进一步具体分析丢帧原因; |
流畅度SM | SMoothness | 和丢帧相对,在VSync机制中1s内Loop运行的次数 |
2.卡顿分析
Android 中的卡顿丢帧原因概述 - 方法论-转载
https://www.androidperformance.com/2019/09/05/Android-Jank-Debug/
Android 中的卡顿丢帧原因概述 - 系统篇-转载
https://www.androidperformance.com/2019/09/05/Android-Jank-Due-To-System/
Android 中的卡顿丢帧原因概述 - 应用篇-转载
https://www.androidperformance.com/2019/09/05/Android-Jank-Due-To-App/#/Android-App-%E8%87%AA%E8%BA%AB%E5%AF%BC%E8%87%B4%E7%9A%84%E6%80%A7%E8%83%BD%E9%97%AE%E9%A2%98
二:Vsync 解读
sync 信号可以由硬件产生,也可以用软件模拟,不过现在基本上都是硬件产生,负责产生硬件 Vsync 的是 HWC,HWC 可生成 VSYNC 事件并通过回调将事件发送到 SurfaceFlinge , DispSync 将 Vsync 生成由 Choreographer 和 SurfaceFlinger 使用的 VSYNC_APP 和 VSYNC_SF 信号
Android 基于 Choreographer 的渲染机制详解 中提到,
Choreographer 的引入,主要是配合 Vsync,给上层 App 的渲染提供一个稳定的 Message 处理的时机&#