iOS APP启动如何优化

2018/8/19 posted in  iOS性能优化

参考文章
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来替代的只执行一次的方案
减少图片大小