美文网首页
界面卡顿优化原理和预排版异步渲染

界面卡顿优化原理和预排版异步渲染

作者: 改变1 | 来源:发表于2022-12-10 17:33 被阅读0次

在重度使用图片的界面,经常会发生掉帧和短时间内内存爆增。掉帧是一个体验问题,然后内存问题也有可能导致我们应用切后台后,被系统习惯性的干掉,返回应用后总是冷启动。如果设计到一些其他重要业务场景,有的时候不友好且容易产生一些莫名其妙的异常。
针对于界面的优化主要有
预排版:对于有cell和重度排版计算的页面,将耗时如请求json和json转model、组件高度、位置等计算放在异步线程去操作。如果放在UI主线程中,当页面滚动涉及到重新布局排版的时候计算类的不仅要重新计算,还会阻塞UI主线程。所以开辟子线程,提前算好,在布局的时候直接获取使用,能减轻主线程耗时。

预编码解码:这个主要针对图片,利用苹果提供的下采样方式,能将一张图片的内存占有从100多m直接优化到10m左右。这种方式在编解码方面做了很多优化,当加载的数据得到优化,不仅仅是减少了时间,也解决了在浏览多张图片时,内存瞬间暴增的问题。

离屏渲染优化:当gpu渲染好贞数据时,会将渲染的数据放入贞缓存区frameBuff中,然后视频控制器中的电子枪会将缓存区的数据扫描读取到视频控制器,完成后发出垂直同步信号,此时再将图片内容提交给显示器。这个是针对于简单图片的过程。但是如果图片层级多,处理比较多,gpu在渲染时并不会将图片完成的处理完,而是处理个别层级的图片后,开辟一个新的内存空间出来,在新的内存区域继续完成没有进行完的图层渲染,等待所有操作完成后再继续后续操作,此过程就叫做离屏渲染。目前已知的增加阴影、遮罩、圆角(特定的操作方式,如果设计到layer视图的content区域和任意一个其他层级)等都能增加图层渲染的复杂度,导致离屏渲染,增加耗时和多余内存开销。

异步渲染:UIView是CALayer的一个代理,相比于CALayer,UIView是在它的基础上为我们绑定了响应者和封装了一些基础的操作。我们所有的渲染绘制操作都在layer层完成。我们在使用UIView组件的时候,计算和渲染的整个过程都在主线程完成。所以此中方式的核心思想就是通过在异步线程中绘制layer和手动绑定对应的事件来减轻主线程的负担,无需等待,多线程同时渲染多个组件,达到加速目的。

相关文章

  • iOS页面流畅度优化 代码解析

    微博 Demo 性能优化技巧预排版预渲染异步绘制全局并发控制更高效的异步图片加载其他可以改进的地方如何评测界面的流...

  • 性能优化

    面试题 CPU和GPU 屏幕成像原理 卡顿产生的原因 卡顿优化 - CPU 卡顿优化 - GPU 离屏渲染 卡顿检...

  • iOS开发进阶:性能优化与稳定性优化实践

    页面卡顿原理与优化 离屏渲染原理与优化 复杂视图的渲染优化 崩溃监控方案

  • iOS - 界面优化

    APP的界面优化 什么样的界面让你觉得需要被优化呢?就是界面会卡顿咯。 下面介绍 卡顿原理 卡顿检测 实战 1、界...

  • iOS性能优化涉及方面总结

    性能优化:界面卡顿优化:1、减少离屏渲染,造成离屏渲染的有shouldRasterize(光栅化)、mask(遮罩...

  • iOS界面优化

    界面优化 本文主要介绍界面卡顿的原理以及优化 界面卡顿 通常来说,计算机中的显示过程是下面这样的,通过CPU、GP...

  • 卡顿优化

    卡顿优化 - CPU 卡顿优化 - GPU 离屏渲染 卡顿检测 耗电优化

  • iOS 面试全方位剖析 -- UI视图篇(二)

    UITableView相关 事件传递&视图响应 图像显示原理 (一) 卡顿&掉帧 绘制原理&异步绘制 离屏渲染 ...

  • # UI视图相关

    UI视图相关 UITableView 事件传递&视图响应 图像显示原理 卡顿&掉帧 绘制原理&异步绘制 离屏渲染 ...

  • 无标题文章

    APP性能优化 UI卡顿优化 View的绘制原理 UI卡顿原理分析 UI卡顿检测分析 BlockCanary原理分...

网友评论

      本文标题:界面卡顿优化原理和预排版异步渲染

      本文链接:https://www.haomeiwen.com/subject/vjlxqdtx.html