思路
兩個階段:
1芭毙、main之前preMain的時間優(yōu)化(統(tǒng)計靠系統(tǒng)迂猴,因為啟動時刻沒法自己統(tǒng)計)
2掷邦、main之后到以第一個界面的時間優(yōu)化(main到第一個界面的時間我們可以統(tǒng)計
首先統(tǒng)計preMain的時間:
檢測preMain的時間名扛,通過添加環(huán)境變量 DYLD_PRINT_STATISTICS
screenshot-20210330-164940.png
分析preMain:
screenshot-20210330-165821.png
preMain的過程:
- 動態(tài)庫加載 dylib loading
- 偏移修正+符號綁定
- OC類的初始化
- load函數晰赞、c++函數的初始化
preMain的優(yōu)化點:
- 動態(tài)庫:自定義動態(tài)庫官方建議控制在6個以內舅踪,可以進行一些動態(tài)庫的合并
- 偏移修正+ 符號綁定:重排啟動方法排列減少缺頁中斷+控制動態(tài)庫的數量
- OC類的初始化:刪掉一些沒用的類
- load函數纽甘、c++函數的初始化:延遲到main以后+不用c++構造函數+重排啟動方法排列減少缺頁中斷
main之后優(yōu)化點:
1、能延遲的延遲
2抽碌、能異步的異步悍赢,充分發(fā)揮CPU的性能
3、啟動的頁面不要用xib货徙、storyboard