APP启动时间应从哪些方面优化?

APP启动时间应从哪些方面优化?

App启动时间可以通过xcode提供的工具来度量,在Xcode的Product->Scheme-->Edit Scheme->Run->Auguments中,将环境变量DYLD_PRINT_STATISTICS设为YES,优化需以下方面入手

  • dylib loading time

    核心思想是减少dylibs的引用

    合并现有的dylibs(最好是6个以内)

    使用静态库

  • rebase/binding time

    核心思想是减少DATA块内的指针

    减少Object C元数据量,减少Objc类数量,减少实例变量和函数(与面向对象设计思想冲突)

    减少c++虚函数

    多使用Swift结构体(推荐使用swift)

  • ObjC setup time

    核心思想同上,这部分内容基本上在上一阶段优化过后就不会太过耗时

    initializer time

  • 使用initialize替代load方法

    减少使用c/c++的attribute((constructor));推荐使用dispatch_once() pthread_once() std:once()等方法

    推荐使用swift

    不要在初始化中调用dlopen()方法,因为加载过程是单线程,无锁,如果调用dlopen则会变成多线程,会开启锁的消耗,同时有可能死锁

    不要在初始化中创建线程

作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS交流群:413038000,不管你是大牛还是小白都欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长!

推荐阅读

iOS开发——最新 BAT面试题合集(持续更新中)

推荐阅读更多精彩内容