關鍵因素: ---- Instrument 性能分析神器網絡
1. 啓動時間 session
應用啓動時間長短對用戶第一次體驗相當重要,同時系統對應用的啓動、恢復等狀態的運行時間也有嚴格的要求,在應用超時的狀況下系統會直接關閉應用。如下是幾個常見場景下系統對app運行時間的要求: * Launch 20秒 Resume 10秒 Suspend 10秒 Quit 6秒Background Task 10分鐘app
要獲取準確的app啓動所需時間,最簡單的方法時首先在main.c中添加以下代碼:async
1
2 3 |
CFAbsoluteTime StartTime; int main(int argc, char **argv) { StartTime = CFAbsoluteTimeGetCurrent(); |
而後在AppDelegate的回調方法application:didFinishLaunchingWithOptions
中添加:ide
dispatch_async(dispatch_get_main_queue(), ^{ NSLog(@」Lauched in %f seconds.」, (CFAbsoluteTimeGetCurrent() – StartTime)); });可能你會以爲爲何這樣可拿到系統啓動的時間,由於這個dispatch_async中提交的工做會在app主線程啓動後的下一個run lopp中運行,此時app已經完成了載入而且將要顯示第一幀畫面,也就是系統會運行到`-[UIApplication _reportAppLaunchFinished]`以前。下圖是用Instruments工具Time Profiler跑的調用棧,Instruments的使用方法建議看WWDC中與performance相關的[session錄像](https://developer.apple.com/videos/wwdc),文字寫起來太單薄不夠直觀哈。
2. 用戶響應工具
3. 內存性能
4. 圖形圖畫ui
5. 文件spa
6. 網絡線程