思路
两个阶段:
1、main之前preMain的时间优化(统计靠系统,因为启动时刻没法自己统计)
2、main之后到以第一个界面的时间优化(main到第一个界面的时间我们可以统计
首先统计preMain的时间:
检测preMain的时间,通过添加环境变量 DYLD_PRINT_STATISTICS
screenshot-20210330-164940.png
分析preMain:
screenshot-20210330-165821.png
preMain的过程:
- 动态库加载 dylib loading
- 偏移修正+符号绑定
- OC类的初始化
- load函数、c++函数的初始化
preMain的优化点:
- 动态库:自定义动态库官方建议控制在6个以内,可以进行一些动态库的合并
- 偏移修正+ 符号绑定:重排启动方法排列减少缺页中断+控制动态库的数量
- OC类的初始化:删掉一些没用的类
- load函数、c++函数的初始化:延迟到main以后+不用c++构造函数+重排启动方法排列减少缺页中断
main之后优化点:
1、能延迟的延迟
2、能异步的异步,充分发挥CPU的性能
3、启动的页面不要用xib、storyboard