用户使用一个App,最先体验到的就是这个App的启动速度,因此,启动时间影响了一个App在用户内心的地位,今天我就来分享下如何优化App的启动时间
App启动干了啥?
app的启动分为冷启动和热启动,冷启动就是点击app图标后需要系统分配一个进程给它,这是一次完整的启动过程
热启动是指app从后台重新被唤起的过程
App启动过程
App的启动分为三个阶段分别是
main()函数执行之前
main()函数执行之后
首屏渲染完成之后
对于app的启动速度,我们可以从这三个阶段入手
main()函数执行之前
在main()函数执行之前,系统会做下面几件事
加载可执行文件(App 的.o 文件的集合)
加载动态链接库,进行 rebase 指针调整和 bind符号绑定
Objc运行时处理,包括类的注册,类别的注册,还有selector唯一的检查
初始胡包括+load()方法attribute修饰的函数调用,创建c++静态全局变量
所以在这个阶段可以做的优化有
减少动态库的加载,合并多个动态库,苹果最多支持6个非系统动态库的合并
减少不用的类或者方法
控制c++全局变量的数量
main()函数执行之后
这个阶段主要是main()函数到appdelegate 的didFinishLaunchingWithOptions
阶段
首屏渲染所需的配置文件读写
首屏列表大数据的读取
首屏渲染的大量计算
这个阶段我们做的主要是把没有必要初始化的操作或者可以放在后面的操作尽量放在后面
首屏渲染完成后
这里我们可以借助time profiler来检查比较耗时的代码,来做相应的优化
也可以通过hook objc_msgSend来捕捉每个方法时间
学习文章地址
https://time.geekbang.org/column/article/85331
网友评论