Android性能優化工具之TraceView

Android性能優化工具之TraceView

引子

  • TraceView是Android平臺特有的數據採集和分析工具,該工具能夠經過圖形化的方式讓咱們瞭解須要跟照片那個程序的性能,能夠具體到method,主要用於分析Android中應用程序的Hotspot。該工具自己是一個數據分析工具,那個如何獲取數據並分析呢,筆者用以前寫的一個demo.apk來進行說明分析。

採集數據

採集數據也就是生成咱們須要分析的trace文件,生成該文件有三種方式android

  • 使用代碼
  • 使用Android Studio
  • 使用DDMS工具
代碼方式生成trace文件

使用代碼生成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 生成trace文件
  • 使用Android studio 自帶的 Android monitor 能夠生成trace,以下圖所示,當啓動debug的應用時,Start Method Tracing 按鈕會顯示成可點擊的狀態, Start trace eclipse

  • 點擊以後,會開始追蹤trace,想要結束trace,再次點擊即 可,Android studio 會幫你自動打開,以下圖所示函數

    Trace 分析圖

    從上面能夠看到,某一些方法的執行時間,調用次數以及其調用關係,也能夠搜索其過濾特定的內容工具

    從左上角能夠切換不一樣的線程,當鼠標懸浮狀態置於某個方法塊上,能夠顯示該方法的開始時間結束時間,以及一些時間比例,以下圖所示性能

    詳細說明

使用DDMS 生成trace
  • DDMS是 Android 調試監控工具,它爲咱們提供了截圖,查看 log,查看視圖層級,查看內存使用等功能,Android Studio 或者eclipse中都集成了該功能,若是你配置了Android環境變量,也能夠直接在命令行敲DDMS,該工具在\android_sdk\tools下面。 在Devices列表中,選中你的設備和進程,進行trace,再次點擊中止trace,中止trace後,DDMS會自動加載trace文件,下面介紹一下面板主要功能,以下圖所示。優化

    DDMS Trace

  • 圖中主要標記了某些重要的項,用DDMS能夠清楚地看到各個線程的執行時間,命令行

    詳細

  • 最後看一下數據分析面板,在數據分析面板,你能夠點擊某個函數展開更詳細的信息,展開後,大多數有如下兩個類別:線程

    • Parents:調用該方法的父類方法

    • Children:該方法調用的子類方法

    • 若是該方法含有遞歸調用,可能還會多出兩個類別:

    • Parents while recursive:遞歸調用時所涉及的父類方法

    • Children while recursive:遞歸調用時所涉及的子類方法

    • 至於數據分析面板紅色框中,主要字段含義已經標記,點擊某個條目能夠進行排序

      分析列表

  • **主要:**很重要的指標:Calls + RecurCalls/Total , 最重要的指標: Cpu Time/Call

    由於咱們最關心的有兩點,一是調用次數很少,但每次調用卻須要花費很長時間的函數。這個能夠從Cpu Time/Call反映出來。另一個是那些自身佔用時間不長,但調用卻很是頻繁的函數。這個能夠從Calls + RecurCalls/Total反映出來。

結語

  • 最後說明一點,實際狀況下,分析的難度比較大,可是當體驗卡頓的時候,咱們能夠藉助TraceView來定位問題。下一篇總結下Systrace 工具使用。
相關文章
相關標籤/搜索