如何提高APP的启动速度
APP的启动包括三个步骤
- main函数执行前
- main函数执行后
- 首屏渲染完成后
如何优化
main函数执行前:
首先main函数执行前做了哪些事情:
(1) 加载可执行文件(个人理解:就是机器码的集合以及一些相关的东西,也就是APP的.o文件的集合)
(2) 加载动态链接库,进行rebase指正调整和bind符合绑定
(3) OC的运行时初始处理,包括oc相关类,分类的注册.selector的唯一性检查等
(4) 初始化,包括执行了load方法,atrribute((constructor))修饰的函数的调用,创建c++静态全局变量
优化方法
(1) 减少动态库加载,每个库都有依赖关系,苹果建议尽量少使用动态库,有多个动态库时尽量将其合并,苹果支持最多6个非系统动态库的合并
(2) 减少加载启动后不会去使用的类或者方法
(3) +load()方法里的内容可以放到首屏渲染结束后再去执行,或者放到initialize方法中去执行,因为+load()方法中进行运行时方法替换时会有4毫秒的消耗
(4) 减少C++全局变量的数量
main函数执行后:
main函数执行后做了哪些事情(main函数执行后是指从main函数执行开始一直到appdelegate中的didFinishLaunchingWithOptions方法中首屏渲染相关方法执行完成):
(1) 首屏初始化所需配置文件的读写操作
(2) 首屏列表大数据的加载
(3) 首屏渲染大量的计算
优化的方法便是分清楚哪些是启动,首屏渲染,其他地方需要初始化的功能,不要统一放在启动和首屏渲染时
首屏渲染结束后:
这个阶段主要是处理非首屏其他业务服务板块的初始化,监听的注册,配置文件的读取,就是从首屏渲染结束后到didFinishLaunchingWithOptions方法结束
网友评论