本文是对戴铭专栏中“App 启动速度怎么做优化与监控?”的小结。
1 启动时,app都做了什么
1-1 main前
- 加载可执行文件(.o的集合)
2. 加载dylb, 做符号绑定,rebase指针 - Runtime初始处理,类注册等
- load()、静态全局变量
1-2 main后
进入main -到> didFinishLaunching首屏渲染相关方法执行完
首屏渲染所需的操作:配置文件、数据、计算
1-3 首屏渲染完成后
app所需的操作:配置文件、注册监听、其他初始化
2 优化
简单说,让main少做事,尤其是渲染前。
如
- 减少load方法
- 注册监听、其他模块初始化等操作后移(已体现在第一节中)
3 监控
3-1 原理
- 定时抓主线程调用栈
- hook objc_msgsend
3-2 工具
- Time Profiler
根据3-1中原理1 实现的。
精度不够高,但基本够用,成本低。 - fishhook
网友评论