ios总结转载

iOS性能优化

2020-08-04  本文已影响0人  AlanGe

一、UI卡优化

1.1、图像显示原理

CPU和GPU是通过总线连接起来的,CPU输出的结果往往是一个位图,经由总线,在合适的时机上传给GPU,GPU拿到位图后做相应的图层渲染,包括纹理的合成等,把结果放到帧缓冲区(Frame Buffer)当中,由视图控制器根据信号,在指定时间之前去帧缓冲区提取要显示的内容,然后显示到屏幕上面。

CPU:UI布局计算、文本的计算和排版、图片的格式转换和解码、图像的绘制,输出位图,然后把这个位图提交到GPU上面。
GPU:纹理渲染。

1.2、UI卡顿、掉帧

VSync垂直信号,页面滑动流畅要求:60fps,每秒60帧画面更新,即每16.7ms就要产生一帧画面,在16.7ms中,要CPU和GPU共同协同完成一帧的数据。

CPU花费一定的时间完成UI布局,文本计算等,包括一些视图的绘制以及图片解码等产生的位图提交给GPU,再由GPU花费一定的时间进行相应的图层的合成和纹理的渲染,然后准备好下一帧画面,然后在下一帧VSync信号到来的时候显示这一帧画面。

如果CPU在UI布局及文本计算的时候花费了过多的时间,那在这16.7ms中留给GPU的时间就非常少,GPU要完成相应的图层的合成和纹理的渲染,总时间就会超过16.7ms,那么在下一帧VSync信号到来的时候,还没有准备好这一帧的画面,这样就会产生掉帧的情况。

UI卡顿、掉帧的原因:
在规定的16.7ms之内,在下一帧VSync信号到来之前,CPU和GPU并没有共同完成下一帧画面的合成,于是就会导致卡顿或者掉帧的问题。

1.3、滑动优化方案

1.4 离屏渲染

1.5 卡顿检测

平时所说的“卡顿”主要是因为在主线程执行了比较耗时的操作
可以添加Observer到主线程RunLoop中,通过监听RunLoop状态切换的耗时,以达到监控卡顿的目的
LXDAppFluecyMonitor -- 卡顿检测

二、耗电优化

2.1 耗电的主要来源

CPU处理:Processing
网络:Networking
定位:Location
图像:Graphics

2.2 耗电优化

三、启动优化

3.1 APP的启动可以分为2种

冷启动(Cold Launch):从零开始启动APP
热启动(Warm Launch):APP已经在内存中,在后台存活着,再次点击图标启动APP

3.2 APP启动时间的优化,主要是针对冷启动进行优化

3.3 APP的冷启动可以概括为3大阶段

1、dyld
2、runtime
3、main


到此为止,可执行文件和动态库中所有的符号(Class,Protocol,Selector,IMP,…)都已经按格式成功加载到内存中,被runtime 所管理

3.4 APP的启动优化

按照不同的阶段

四、安装包优化

4.1 安装包瘦身

安装包(IPA)主要由可执行文件、资源组成

4.2 LinkMap

生成LinkMap文件,可以查看可执行文件的具体组成

可借助第三方工具解析LinkMap文件: https://github.com/huanxsd/LinkMap

上一篇 下一篇

猜你喜欢

热点阅读