1. 程式人生 > >Android 中效能優化工具之TraceView使用總結

Android 中效能優化工具之TraceView使用總結

概述

TraceView是Android平臺配備一個很好的效能分析工具,它可以通過圖形化的方式讓我們瞭解我們要跟蹤的程式的效能,並且能具體到method。主要用於分析Android中應用程式中的hotspot,TraceView 本身只是一個數據分析工具,而資料的採集則需要使用 Android SDK 中的 Debug 類或者利用 DDMS 工具。

用法

TraceView有兩種使用方法:
1:通過Android SDK 中Debug類來追蹤程式碼的執行效能,如下:
// 在自己想要開始除錯的地方start
Debug.startMethodTracing(“rongzitong.trace”);
// 在關鍵程式碼結束的地方stop
Debug.stopMethodTracing();
此種方式,是通過原始碼中呼叫,必須要知道原始碼才可使用。這兩個函式執行過程中將採集執行時間內該應用所有執行緒(注意,只能是 Java 執行緒)的函式執行情況,並將採集資料儲存到 /mnt/sdcard/ 下的一個檔案中。開發者然後需要利用 SDK 中的 TraceView 工具來分析這些資料。

2:通過Andorid 自帶的DDMS來呼叫,如下:
DDMS 中 TraceView 使用示意圖如下,除錯人員可以通過選擇 Devices 中的應用後,點選
這裡寫圖片描述
按鈕 Start Method Profiling(開啟方法分析)和點選
這裡寫圖片描述
Stop Method Profiling(停止方法分析)
這裡寫圖片描述

分析trace檔案

上述方法後,會得到記錄的trace檔案,使用DDMS開啟,如下:
這裡寫圖片描述
traceView介面比較複雜,其UI劃分為上下兩個面板,上面為TimeLine(時間線面板),下面為Profile
Panel (分析面板)。
時間線面板又分為左右兩個pane:
● 左邊 Pane 顯示的是測試資料中所採集的執行緒資訊。由圖可知,本次測試資料採集了 main 執行緒,感測器執行緒和其它系統輔助執行緒的資訊。
● 右邊 Pane 所示為時間線,時間線上是每個執行緒測試時間段內所涉及的函式呼叫資訊。這些資訊包括函式名、函式執行時間等。由圖可知,main 執行緒對應行的內容非常豐富,而其他執行緒在這段時間內幹得工作則要少得多。

另外,開發者可以在時間線 Pane 中移動時間線縱軸。縱軸上邊將顯示當前時間點中某執行緒正在執行的函式資訊。
下半部分,Profile Panel (分析面板)為traceView的核心介面,主要展示了某個執行緒中各個函式呼叫的情況,包括CPU使用時間,呼叫次數等。而這些資訊正是查詢 hotspot 的關鍵依據,所以對於開發者來說一定要了解Profile Panel中各列的含義。
這裡寫圖片描述

瞭解完 TraceView 的 UI 後,現在介紹如何利用 TraceView 來查詢 hotspot。一般而言,hotspot 包括兩種型別的函式:
● 一類是呼叫次數不多,但每次呼叫卻需要花費很長時間的函式。
● 一類是那些自身佔用時間不長,但呼叫卻非常頻繁的函式。

通過以上的列名所代表的函式,我們可以分析出類中方法執行時所消耗的CPU,進而對其進行優化。