App启动速度优化

本文是对戴铭专栏中“App 启动速度怎么做优化与监控?”的小结。

1 启动时,app都做了什么

1-1 main前

  1. 加载可执行文件(.o的集合)
    ​2. 加载dylb, 做符号绑定,rebase指针
  2. Runtime初始处理,类注册等
  3. load()、静态全局变量

1-2 main后

进入main -到> didFinishLaunching首屏渲染相关方法执行完
首屏渲染所需的操作:配置文件、数据、计算

1-3 首屏渲染完成后

app所需的操作:配置文件、注册监听、其他初始化

2 优化

简单说,让main少做事,尤其是渲染前。

  1. 减少load方法
  2. 注册监听、其他模块初始化等操作后移(已体现在第一节中)

3 监控

3-1 原理

  1. 定时抓主线程调用栈
  2. ​hook objc_msgsend

3-2 工具

  1. Time Profiler
    根据3-1中原理1 实现的。
    精度不够高,但基本够用,成本低。
  2. fishhook

你可能感兴趣的:(App启动速度优化)