iOS 优化方案

2020-12-09  本文已影响0人  shuaikun
优化方案.png

一、性能优化基本方案

1、卡顿原因以及避免方案
2、耗电优化
3、启动优化
4、安装包瘦身

二、卡顿优化原因以及避免方案

1、CPU 、GPU介绍

成像过程CPU和GPU起着至关重要的作用

image.jpeg

如上图CPU、GPU通过总线连接,通过CPU进行绘图,将位图经由总线在合适的时机给GPU,GPU做位图的纹理渲染和合成,再放到帧缓冲区域(Frame Buffer)中, 由视频控制器根据VSync信号在帧缓冲区域中提取屏幕显示内容,在iOS中是双缓冲机制,有前帧缓存、后帧缓存

2、屏幕成像原理

每一次VSync信号就代表一帧


image.jpeg

这样,我们就能大概知道为什么会出现卡顿现象了

3、卡顿产生的原因

(1)苹果的手机刷帧率是60FPS,也就是16.7ms就会有一次VSync信号,刷新一次页面
(2)如果CPU、GPU处理时间过长,导致VSync信号到来之前CPU和GPU无法完成下一帧画面的合成,就会使用上一帧的画面,等待下一帧的到来

image.jpeg

VSync信号到来之前CPU和GPU无法完成下一帧画面的合成,就会造成肉眼可见的卡顿

4、卡顿的优化

从上面已经了解了造成卡顿的原因,即CPU和GPU的处理

(1) CPU层面优化
(2)GPU层面优化
5、离屏渲染

上面GPU优化中提到了离屏渲染,介绍一下其为何会消耗性能及如何避免的方式

(1) 什么是离屏渲染

在OpenGL中,GPU有2种渲染方式

(2)离屏渲染为何会消耗性能?
(3)哪些操作会触发离屏渲染?

如果设置了layer.shadowPath就不会产生离屏渲染

6、卡顿检测

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

三、耗电优化

1、耗电的主要来源

(1)CPU处理 Processing
(2)网络 Networking
(3)定位 Location
(4)图像 Graphics


image.jpeg
2、耗电优化解决方案
(1)CPU层面的优化
(2)Networking层面的优化
(3)Location层面优化
(4)硬件检测优化

四、启动优化

1、App的启动
(1)App的启动分2种
(2)下面,App启动优化,主要是针对冷启动进行优化

如何检测App的启动时间分析 ? (Edit scheme -> Run -> Arguments)

image.jpeg
2、App的冷启动三个阶段

APP的冷启动可以概括为3大阶段,分别是dyld、runtime、main

image.jpeg

冷启动三个阶段

(1)APP的启动 - dyld

dyld(dynamic link editor):Apple的动态链接器,可以用来装载Mach-O文件(可执行文件、动态库等)
启动APP时,dyld所做的事情有:

(2)APP的启动 - runtime,启动APP时,runtime所做的事情有:

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

(3)APP的启动 - main

总结一下:

3、APP的启动优化方案

按照不同的阶段,做不同的优化

(1)dyld
(2)runtime
(3)main

五、安装包瘦身

1、安装包组成:安装包(IPA)主要由资源、可执行文件组成
(1)资源(图片、音频、视频等)
(2)可执行文件瘦身:编译器优化
2、LinkMap

(2)生成LinkMap文件,可以查看可执行文件的具体组成
(2)可借助第三方工具解析 LinkMap文件

参考博客:https://www.jianshu.com/p/c67717f840a2

上一篇下一篇

猜你喜欢

热点阅读