採集數據也就是生成咱們須要分析的trace文件,生成該文件有三種方式android
使用代碼生成traces文件主要利用Android系統的Debug這個api,該類在android.os包下,示例代碼以下api
//開始 trace,默認保存文件到 "/sdcard/filename.trace" Debug.startMethodTracing(String fileName); /*須要分析的代碼..*/ Debug.stopMethodTracing();
簡單說明一下,當調用開始trace代碼的時,系統會產生 trace 文件,而且產生追蹤的數據,當調用結束trace代碼時,會將追蹤的數據寫入到 trace文件中。既然文件保存在sdcard根目錄,咱們能夠copy出來,也能夠經過adb 將其pull 出來性能優化
使用Android studio 自帶的 Android monitor 能夠生成trace,以下圖所示,當啓動debug的應用時,Start Method Tracing 按鈕會顯示成可點擊的狀態, eclipse
點擊以後,會開始追蹤trace,想要結束trace,再次點擊即 可,Android studio 會幫你自動打開,以下圖所示函數
從上面能夠看到,某一些方法的執行時間,調用次數以及其調用關係,也能夠搜索其過濾特定的內容工具
從左上角能夠切換不一樣的線程,當鼠標懸浮狀態置於某個方法塊上,能夠顯示該方法的開始時間結束時間,以及一些時間比例,以下圖所示性能
DDMS是 Android 調試監控工具,它爲咱們提供了截圖,查看 log,查看視圖層級,查看內存使用等功能,Android Studio 或者eclipse中都集成了該功能,若是你配置了Android環境變量,也能夠直接在命令行敲DDMS,該工具在\android_sdk\tools下面。 在Devices列表中,選中你的設備和進程,進行trace,再次點擊中止trace,中止trace後,DDMS會自動加載trace文件,下面介紹一下面板主要功能,以下圖所示。優化
圖中主要標記了某些重要的項,用DDMS能夠清楚地看到各個線程的執行時間,命令行
最後看一下數據分析面板,在數據分析面板,你能夠點擊某個函數展開更詳細的信息,展開後,大多數有如下兩個類別:線程
Parents:調用該方法的父類方法
Children:該方法調用的子類方法
若是該方法含有遞歸調用,可能還會多出兩個類別:
Parents while recursive:遞歸調用時所涉及的父類方法
Children while recursive:遞歸調用時所涉及的子類方法
至於數據分析面板紅色框中,主要字段含義已經標記,點擊某個條目能夠進行排序
**主要:**很重要的指標:Calls + RecurCalls/Total , 最重要的指標: Cpu Time/Call
由於咱們最關心的有兩點,一是調用次數很少,但每次調用卻須要花費很長時間的函數。這個能夠從Cpu Time/Call反映出來。另一個是那些自身佔用時間不長,但調用卻很是頻繁的函數。這個能夠從Calls + RecurCalls/Total反映出來。