1. 程式人生 > 其它 >apm 應用效能管理(啟動優化/ 掉幀卡頓/ 耗電/ 記憶體洩漏等)

apm 應用效能管理(啟動優化/ 掉幀卡頓/ 耗電/ 記憶體洩漏等)

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.圖片/音視訊資源的無數壓縮, 去除無用的資源