iOS開發之效能除錯Instruments(一)
iOS效能除錯有很多方法,這裡講一下Xcode內建工具Instruments。
Instruments是一個官方提供的強大的效能除錯工具集。
instruments.png
1.Blank(空模板):建立一個空的模板,可以從Library庫中新增其他模板;
2.Activity Monitor(活動監視器):監控程序的CPU,記憶體,磁碟,網路使用情況 是程式在手機執行真正佔用的記憶體大小
3.Allocations(記憶體分配):跟蹤過程的匿名虛擬記憶體和堆的物件提供類名和可選保留/釋放歷史;
4.Automation(自動化):這個模板執行它模擬使用者介面互動為IOS機應用從instrument啟動的指令碼;可以將一些特定流程寫成指令碼來執行 **
5. Cocoa Layout 觀察NSLayoutConstraint物件的改變,幫助我們判斷什麼時間什麼地點的constraint是否合理
6.Core Animation(圖形效能)這個模組顯示程式顯示卡效能以及CPU使用情況
7.CoreData 這個模組跟蹤Core Data檔案系統活動
8.Counters 收集使用時間或基於事件的抽樣方法的效能監控計數器(PMC)事件 ?
9.Energy Diagnostics 耗電量監控
10.File Activity 檢測檔案建立,移動,變化,刪除等
11.GPU Driver 測量GPU驅動統計和CPU使用情況
12.Leaks(洩漏):一般的措施記憶體使用情況,檢查洩漏的記憶體,並提供了所有活動的分配和洩漏模組的類物件分配統計資訊以及記憶體地址歷史記錄;
13. Metal System Trace (Metal API是apple 2014年在ios平臺上推出的高效底層的3D圖形API,它通過減少驅動層的API呼叫CPU的消耗提高渲染效率。http://blog.csdn.net/tomicyo/article/details/41792009)?
14.Network 用連結工具分析你的程式如何使用TCP/IP和UDP/IP連結
15.OpenGL ES Analysis 這個模組測量分析OpenGL ES活動正確性檢測以及表現問題,提供解決建議
16.System Trace 系統跟蹤,通過顯示當前被排程執行緒提供綜合的系統表現,顯示從使用者到系統的轉換程式碼通過兩個系統呼叫或記憶體操作
17. System Usage 這個模板記錄關於檔案讀寫,sockets,I/O系統活動, 輸入輸出
18.Time Profiler(時間探查):執行對系統的CPU上執行的程序低負載時間為基礎取樣。
19.Zombies 測量一般的記憶體使用,專注於檢測過度釋放的野指標物件,也提供物件分配統計,以及主動分配的記憶體地址歷史
其中常用的有以下幾種工具
Allocations,Leaks,Zombies,Core Animation,Automation,Time Profiler,Cocoa Layout,Energy Diagnostics,Network
按功能模組分類
一、定位記憶體問題
1.記憶體不合理引用,檢測重複操作記憶體是否持續增長 Allocations
每次操作後,點選mark generations button,會設定一個flag,然後檢視每個迭代的詳細資料
2.記憶體洩漏Leaks
記憶體洩漏使用Leaks檢測,如果物件發生記憶體洩漏,detail panel 中會看到物件的retain release歷史記錄,如果非物件發生記憶體洩漏,就會看到malloc和free的呼叫歷史
3.野指標Zombies
Zombie問題,引用retaincount為0的物件,使用Debug模式,將環境變數NSZombieEnabled設為true
二、檢測I/O活動
檢測iOS app如何使用TCP/IP和UDP/IP。與connections Instruments一起使用,檢測app傳送和接收的包數目
三、影象效能檢測
1.core animation graphics 用來檢測幀頻率
2.OpenGL activity
3.GPU Driver
四、CPU使用
1.Performance Monitor Counters
2.電量:Energry 跟蹤電量、CPU、網路、顯示亮度、睡眠/喚醒、藍芽、wifi、GPS
可以全天開啟Energry Diagnostics Log模式,在開發手機裝置中,(重啟或關機會丟失該資料)。資料收集結束後,將log資料傳到PC上
3.執行緒使用Multicore Trace Template,分析多核效能,執行緒狀態、排程佇列、塊使用情況。Multicore Trace Template包含Thread states和dispatch Instruments。
4.Timer Profiler Trace Template檢測核心使用情況
五、自動化測試
UI automation Automation instrument 工具允許你讓 iOS 應用的使用者介面測試自動化。
自動化介面測試可以讓你:
1 省去關鍵人員和釋放其他工作資源
2 執行更多綜合測試
3 開發可重複的迴歸測試
4 減少程式錯誤
5 提高開發週期,產品更新