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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容