iOS性能优化07-启动优化01-冷启动简介

APP的启动可以分为2种:

  • 冷启动(Cold Launch):从零开始启动APP

  • 热启动 (Warm Launch):APP已经在内存中,在后台存活着,再次点击图标启动APP

APP启动时间的优化

那我们通常所说的启动时间优化都是再说的冷启动的时间优化,其实Xcode是提供给我们一种分析启动时间的方式,我们接下来试一试

  • 通过添加环境变量可以打印出APP的启动时间分析(Edit Scheme -> Run -> Arguments)

    • DYLD_PRINT_STATISTICS设置为1

    我们可以看到控制台打印出了

     Total pre-main time: 238.11 milliseconds (100.0%)
         dylib loading time: 173.78 milliseconds (72.9%)
        rebase/binding time: 126687488.9 seconds (15889931.7%)
            ObjC setup time:  15.16 milliseconds (6.3%)
           initializer time:  62.59 milliseconds (26.2%)
           slowest intializers :
             libSystem.B.dylib :   6.66 milliseconds (2.7%)
    libBacktraceRecording.dylib :   7.30 milliseconds (3.0%)
    libMainThreadChecker.dylib :  40.12 milliseconds (16.8%)
    
    • 如果需要更详细的信息,那就将DYLD_PRINT_STATISTICS_DETAILS设置为1

    我们看到这次输出的信息比上次要详细很多

    total time: 981.15 milliseconds (100.0%)
    total images loaded:  334 (327 from dyld shared cache)
    total segments mapped: 21, into 370 pages
    total images loading time: 664.10 milliseconds (67.6%)
    total load time in ObjC:  20.03 milliseconds (2.0%)
    total debugger pause time: 402.89 milliseconds (41.0%)
    total dtrace DOF registration time:   0.22 milliseconds (0.0%)
    total rebase fixups:  17,951
    total rebase fixups time:   2.27 milliseconds (0.2%)
    total binding fixups: 460,826
    total binding fixups time: 229.13 milliseconds (23.3%)
    total weak binding fixups time:   0.03 milliseconds (0.0%)
    total redo shared cached bindings time: 254.48 milliseconds (25.9%)
    total bindings lazily fixed up: 0 of 0
    total time in initializers and ObjC +load:  65.34 milliseconds (6.6%)
                         libSystem.B.dylib :   9.14 milliseconds (0.9%)
               libBacktraceRecording.dylib :   7.73 milliseconds (0.7%)
                           libobjc.A.dylib :   1.55 milliseconds (0.1%)
                            CoreFoundation :   2.24 milliseconds (0.2%)
                libMainThreadChecker.dylib :  38.86 milliseconds (3.9%)
                    libLLVMContainer.dylib :   2.13 milliseconds (0.2%)
    

total symbol trie searches: 1116978
total symbol table binary searches: 0
total images defining weak symbols: 37
total images using weak symbols: 92
```

这些数据可能对大家来说不太直观,这其实只是提供给大家一个参考,一般我个人认为total time在
400~500ms之间就相对来说是比较正常的,如果时间太长就可能要进行相应的优化了,接下来我们来看看冷启动的大概分哪几个阶段

APP冷启动阶段可以概括为3大阶段

  • dyld
  • runtime
  • main

One More Thing

喜欢的朋友可以扫描关注我的公众号(您的支持是我写作的最大动力)

iOS_DevTips

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值