美文网首页
iOS开发—APP启动时间优化

iOS开发—APP启动时间优化

作者: 小呀小苹果呀 | 来源:发表于2019-02-20 11:36 被阅读0次

    这里只讨论APP冷启动的情况。启动时间由 pre-main 时间和 main 函数到第一个界面渲染完成时间这两个部分组成。

    一. 度量 iOS App 的pre-main启动时间

    Xcode设置.png pre-main流程.png 总过程.png 详情.png

    二. pre-main启动时间分析

    App启动过程

    1. 解析Info.plist
      加载相关信息,例如闪屏
      沙箱建立、权限检查
    2. Mach-O加载
      如果是胖二进制文件,寻找合适当前CPU类别的部分
      加载所有依赖的Mach-O文件(递归调用Mach-O加载的方法)
      定位内部、外部指针引用,例如字符串、函数等
      执行声明为attribute((constructor))的C函数
      加载类扩展(Category)中的方法
      C++静态对象加载、调用ObjC的 +load 函数
    3. 程序执行
      调用main()
      调用UIApplicationMain()
      调用applicationWillFinishLaunching
    1. dylib loading time
      加载系统的动态库使很快的,因为可以缓存,而加载内嵌的动态库速度较慢。所以,提高这一步的效率的关键是:减少动态库的数量,可以通过合并动态库进行优化。
    2. rebase/binding time
      Rebase和Bind都是为了解决指针引用的问题,减少指针数量才会减少这部分工作的耗时。对于 ObjC 来说就是减少 Class,selector 和 category 这些元数据的数量,可通过合并Category和功能类似的类,删除无用的方法和类,多用Swift Structs(因为Swfit Structs是静态分发的)等方式优化。
    3. Objc setup

    相关文章

      网友评论

          本文标题:iOS开发—APP启动时间优化

          本文链接:https://www.haomeiwen.com/subject/jnmbsftx.html