准确地说,这里仍可以进一步细化:16ms 内完成 APP 侧数据的生产;16ms 内完成 sf layer 的合成View 的视觉效果正是通过这一整条复杂的链路一步步展示出来的,有了这个前提,那就可以得出一个结论:上述任意链路发生卡顿,均会造成卡顿 。
2.3 生产者和消费者我们再回到 Vsync 的话题,消费 Vsync 的双方分别是 App 和 sf,其中 App 代表的是生产者,sf 代表的是消费者,两者交付的中间产物则是 surface buffer 。
再具体一点,生产者大致可以分为两类,一类是以 window 为代表的页面,也就是我们平时所看到的 view 树这一套;另一类是以视频流为代表的可以直接和 surface 完成数据交换的来源,比如相机预览等 。
对于一般的生产者和消费者模式,我们知道会存在相互阻塞的问题 。比如生产者速度快但是消费者速度慢,亦或是生产者速度慢消费者速度快,都会导致整体速度慢且造成资源浪费 。所以 Vsync 的协同以及双缓冲甚至三缓冲的作用就体现出来了 。
思考一个问题:是否缓冲的个数越多越好?过多的缓冲会造成什么问题?这里结合 view 的一生,我们可以把两个流程合在一起,让我们的视角再高一层:
答案是会造成另一个严重的问题:lag,响应延迟
2.4 机制上的保护这里我们来回答第三个问题,从系统的渲染架构上来说,机制上的保护主要有几方面:
- Vsync 机制的协同;
- 多缓冲设计;
- surface 的提供;
- 同步屏障的保护;
- 硬件绘制的支持;
- 渲染线程的支持;
- GPU 合成加速;
2.5 再看卡顿的成因经过上面的讨论,我们得出一个卡顿分析的核心理论支撑:渲染机制中的任何流转过程发生异常,均会造成卡顿 。
那么接下来,我们逐个分析,看看都会有哪些原因可能造成卡顿 。
2.5.1 渲染流程
- Vsync 调度:这个是起始点,但是调度的过程会经过线程切换以及一些委派的逻辑,有可能造成卡顿,但是一般可能性比较小,我们也基本无法介入;
以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!
「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助:- 北京冬奥会开幕式直播在哪里看
- 主播直播拼多多砍价拿手机 拼多多上砍价拿手机
- 让直播小白变身直播大咖 如何从小白变成主播
- 童年女神舒畅直播稳居直播榜榜首,人气丝毫不输巅峰时期的她
- 国庆直播盘点 国庆的直播
- 挽回前男友攻略:如何读懂他的心
- 读懂B超单验证胎儿是男是女 b超有两点基本是男孩
- 苹果手机投屏电脑直播教程 怎么将iphone投屏到电脑
- 聊聊直播行业中 直播行业
- 明星直播带货的风口已过 直播带货是风口