参考文章
iOS App 启动性能优化
iOS APP启动如何优化
App总的启动时间 = main()之前加载装载时间 + didFinishLaunchingWithOptions()之后时间
didFinishLaunchingWithOptions之后
在didFinishLaunching时间后,我们有SDK的初始化,视图控制器的创建。网络请求,配置等信息。可以将这个进行类,并分别时间进行配置- 日志,统计可以继续放在最先配置
- 推送,即是通讯,项目配置
- 其他sdk的初始化
一点:日志,统计配置先启动,其次是推送,环境配置,项目配置,可以放在加载广告时进行处理,最后是一般SDK的配置,可以在第一个页面渲染完成后进行配置。
二点:可以将网络请求放在didAppear里进行,并将数据解析渲染等操作,放在didAppear里进行。首页面给一个缓存的数据先显示出来。
总的思路:1.didFinishLaunchingWithOptions里的配置操作 2.减少第一个页面的渲染时间。main之前的加载时间
动态库加载越多,启动越慢(因为在启动时,需要将编译时依赖的动态库的函数真正绑定)
Objc类越多,启动越慢(因为要解析更多的二进制数据)
静态数据越多,启动越慢
+load越多,启动越慢
Total pre-main time: 1.7 seconds (100.0%)
dylib loading time: 252.96 milliseconds (14.7%)
rebase/binding time: 939.94 milliseconds (54.7%)
ObjC setup time: 113.02 milliseconds (6.5%)
initializer time: 410.92 milliseconds (23.9%)
优化手段
移出不需要的动态库
移出不需要用到的类
合并功能类似的类和扩展(一般不做优化,对程序员成本太高)
减少+load方法里执行耗时的操作,可以用dispatch_once来替代的只执行一次的方案
减少图片大小