iOS面试专题

iOS原理 App的启动优化1:优化建议

2020-12-05  本文已影响0人  东篱采桑人

iOS原理 文章汇总

基本概念

App的启动优化指的是减少App的启动时间,启动方式分为两种:『冷启动』和『热启动』。

一般来说启动优化指的是针对冷启动方式的优化,启动时间也分为两个阶段:『main()函数之前』和『main()函数之后』。

Main()函数之前

main()函数之前pre-main阶段,这个阶段的启动时间是没法自主统计的,只能由系统反馈,在Xcode中通过简单配置即可查看。

在Xcode中新建一个项目,然后在菜单中,选择Product --> Scheme --> Edit Scheme ,找到Run --> Environment Variables,在这里添加一个name为DYLD_PRINT_STATISTICS的环境变量,并将其value设置为1。再运行项目,即可在console中查看到下面所示的pre-main time

Total pre-main time: 121.09 milliseconds (100.0%)
         dylib loading time:  31.90 milliseconds (26.3%)
        rebase/binding time:  37.44 milliseconds (30.9%)
            ObjC setup time:   6.25 milliseconds (5.1%)
           initializer time:  45.49 milliseconds (37.5%)
           slowest intializers :
             libSystem.B.dylib :   7.99 milliseconds (6.6%)
   libBacktraceRecording.dylib :  10.73 milliseconds (8.8%)
    libMainThreadChecker.dylib :  23.81 milliseconds (19.6%)

从输出结果可知,pre-main总共耗时123.40ms,分为如下4个阶段:

针对这个阶段,优化建议如下:

Main()函数之后

main()函数开始至applicationWillFinishLaunching结束,统一称为main()函数之后的部分。耗时因素主要是以下几种:

这个阶段的启动时间可以自主统计,根据各App的业务代码来决定。优化建议如下:

推荐阅读

1. iOS原理 App的启动优化2:二进制重排
2. iOS App 启动性能优化
3. iOS中的动态库和静态库

上一篇下一篇

猜你喜欢

热点阅读