iOS 页面卡顿产生的原因和优化

2024-03-24  本文已影响0人  阿木小丸子

CPU中央处理器,主要任务是对象的创建和销毁、对象属性的调整、布局计算、文本计算和排版、图片的格式转换和解码、图片的绘制等。
GUP图像处理器。主要是纹理的渲染。

页面成像是由CPU和GPU共同完成的,一般是CPU处理好数据,交给GUP渲染,然后放在帧缓冲区,被视图控制器读取,显示在屏幕上。

iOS的屏幕成像是由很多帧组成的,每一帧渲染都先发送一个垂直同步信号,然后发送很多个水平同步信号,每一行的水平同步信号表示处理完一行的数据,直到所有的水平信号都发送完成,表示这一帧处理完成。再会进行下一轮的垂直信号发送。
CPU和GPU处理都需要时间,在下一轮垂直信号发送时,CPU和GPU还没有处理完成,那么就只能读取上一帧的数据,造成掉帧,页面卡顿。

人们不能看出页面卡顿的帧是每秒60帧,计算得出16ms就会有一个垂直信号发出,那么CPU和GPU对于数据的计算和渲染要在16ms以内完成。

优化:
CPU:
1、把耗时的计算放在子线程完成,主线程渲染。
2、图片的尺寸尽量和容器的尺寸保持一致,避免放大缩小。
3、控制线程的最大并发。
4、不要频繁的调用UIView的相关属性。
5、尽量使用轻量级的对象。
GPU:
1、减少视图的层级和数量。
2、避免短时间内大量的图片展示。
3、GPU纹理尺寸的控制。
4、减少透明度。
5、注意离屏渲染。

上一篇 下一篇

猜你喜欢

热点阅读