apm 應用效能管理(啟動優化/ 掉幀卡頓/ 耗電/ 記憶體洩漏等)
阿新 • • 發佈:2021-12-17
APM
首先檢視各個階段耗時 : (環境變數設定 dyldPRINTSTATISTICS = 1選項,)
1. 啟動優化
關鍵: 找到耗時的原因 t總 = t1 (premain) + t1(main之後) t1: premain 過程: 1.先載入可執行檔案(所有.o檔案的集合) 2.載入動態連結庫(所有系統的framework, 比如UIKit、Foundation等都是以動態連結庫 的方式整合進App中的) tip: 動態庫好處: a.在記憶體中只有一份, 所有程序共享系統庫 b.相比靜態庫, 編譯時不需要打進去 3. oc類的載入/初始化 +load 方法 優化: 1.減少不不要的framework 2. framework應當設為optional和required (支援的所有iOS系統版本) 3.合併或刪減一個oc類, 清理沒用的類, 使用Appcode檢查 4刪減無用的靜態變數 5刪減無用的廢棄的方法 6不必要在+load方法中做的事 延遲到+initialize中 t2: main() 之後 過程: 1.初始化相關服務(三方庫等) 2.顯示首頁(優化也是圍繞著如何快速展現首頁來做) 優化: 1. 程式碼方式載入首頁檢視, 不用xib 2. 非同步:啟動時的網路請求 3.非同步: 初始化第三方服務
2.卡頓優化
一.卡頓檢測
1.最直觀的是FPS的掉幀情況
2.timeProfile動態檢測耗時方法
3.開發工具,動態線上檢測主執行緒的卡頓情況 二.優化
CPU
1.非同步處理耗時操作,(網路耗時,計算耗時),也要同時控制最大併發數
2.介面的快取處理,(同圖片快取原理,先顯示快取,後展示網路資料)
3.image的size= imageView的大小
4.tableView的相關優化
5.layer替代相關無事件的UIView
GPU
1.減少圖層混合& 離屏渲染
2.設定不透明度opaque=YES
3.耗電/耗網路
2.1 Energ Impact 檢視概況 2.2細緻驗證 instrument - energy log (+配合timeProfile 抓看程式碼執行細節) 優化: a.cpu優化, 儘可能將次cpu功耗, 儘可能減少定時器的使用 b.網路請求優化 ,減少長連線等 c.定位優化 - 及時關閉 d.硬體檢測優化 - 加速計 陀螺儀等嗎, 及時關閉
4. 記憶體洩漏
一.檢測
Analyze c函式的釋放 Leaks Acllocations 需要動態執行去觀察 第三方的MLeakFinder pop或者dismiss 3秒後呼叫willDealloc看時候會中斷言
二.優化
1.注意迴圈引用,delegate, block, timer
2.for迴圈產生大量的物件,通過加autoReleasePool 及時釋放
5.包體積的優化
一.可執行檔案 1.編譯器的優化,選項的設定 2.靜態庫的二次打包
3.去除無用的類檔案 二.資源 1.圖片/音視訊資源的無數壓縮, 去除無用的資源