美文网首页
iOS性能优化07-启动优化01-冷启动简介

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

作者: 阿召 | 来源:发表于2020-03-03 22:55 被阅读0次

    APP的启动可以分为2种:

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

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

    APP启动时间的优化

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

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

      • DYLD_PRINT_STATISTICS设置为1
      image

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

       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
    image

    One More Thing

    点击查看 2020—课程列表 全网IT各种资源有需求的可以微我,或者你喜欢的课程都可以给我发链接剩下的我来搞定

    喜欢的朋友可以扫描关注我的公众号(多多点赞,多多打赏,您的支持是我写作的最大动力)关注有福利可以使用免费梯子自由上网

    iOS_DevTips

    相关文章

      网友评论

          本文标题:iOS性能优化07-启动优化01-冷启动简介

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