ios 应用启动速度优化

启动时间计算公式

App总启动时间 = t1(main()之前的加载时间) + t2(main()之后的加载时间)。

APP启动时间分为 main()之前的加载时间 和 main()之后的加载时间

main()之前的加载时间 :系统dylib(动态链接库)和自身App可执行文件的加载

main()之后的加载时间:main方法执行之后到AppDelegate类中的

- (BOOL)Application:(UIApplication *)Application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法执行结束前这段时间,主要是构建第一个界面,并完成渲染展示


main()调用之前的加载过程:

App开始启动后,系统首先加载可执行文件(自身App的所有.o文件的集合),然后加载动态链接库dyld,dyld是一个专门用来加载动态链接库的库。 执行从dyld开始,dyld从可执行文件的依赖开始, 递归加载所有的依赖动态链接库。 

动态链接库包括:iOS 中用到的所有系统 framework,加载OC runtime方法的libobjc,系统级别的libSystem,例如libdispatch(GCD)和libsystem_blocks (Block)。

针对这一步骤的优化有:

1.减少非系统库的依赖

2.合并非系统库

3.使用静态资源,比如把代码加入主程序

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 应用启动时间,直接影响用户对一款应用的判断和使用体验。头条主app本身就包含非常多并且复杂度高的业务模块(如新闻、...
    新_1740阅读 462评论 0 2
  • 应用启动时间,直接影响用户对一款应用的判断和使用体验。头条主app本身就包含非常多并且复杂度高的业务模块(如新闻、...
    hgl阅读 448评论 0 0
  • 有很多小伙伴习惯于公开分享他人收费课程的“听课整理稿”,内容和老师的讲述基本一致。 对于这样的事情,你怎么看? 话...
    FanyLi阅读 299评论 0 0
  • 今天京东满减活动最后一天,每满200减100,我买了400的书直接减了200。 虽然没有抢到大额度优惠券有点遗憾,...
    008明瑾阅读 382评论 0 0
  • 我和T同学是从初一认识的,那时一见面就觉得自来熟,后来他和我的闺蜜在初二时好了,我也因为种种原因和他兄弟...
    我是你的于大大LL阅读 199评论 1 0