【Android -- 性能优化】启动速度分析工具 — TraceView
不斷學習,做更好的自己!💪
| 歡迎打開微信,關注我的視頻號:程序員朵朵 | 點我 | 點我 |
一、簡介
TraceView 是 Android SDK 中內置的一個工具,它可以加載 trace 文件,用圖形的形式展示代碼的執行時間、次數及調用棧,主要便于我們分析及優化方法的執行。
二、官方文檔
參考:TraceView 使用文檔
三、使用
1. 通過 Android studio 自帶的 traceview 查看
通過 Android studio 打開 Android profiler 點擊其中的 CPU就會有以下的界面:
如上圖所示,CPU Profiler的視圖包括以下內容:
①App timeline:顯示CPU在執行過程中的時間軸。
②線程 timeline:顯示線程列表以及每個線程在某個時間段占用的CPU的資源情況。
③CPU timeline:列出CPU在App運行過程中CPU使用情況。
④Method Trace:在指定線程中,執行的方法棧,橫行表示執行的時間軸,縱向表示方法執行的調用軸。
使用步驟
- 打開CPU Profiler界面
- 點擊下方的紅色圓點,開始記錄(Record)堆棧(此時按鈕變灰色),記錄一段時間段后,再點擊下停止記錄(此時按鈕變紅色)
- 在②區域選擇你用分析的線程
- 在③區域中選擇要分析的CPU片段(只能有記錄的CPU片段)
- 查看④區域,就會有一系列的執行方法隊列顯示出來,通過橫向查看可以看出某個方法的執行時間(橫向時間越長,執行的時間越長),通過縱向表示方法的調用關系。
技術說明
②區域中,線程占用CPU資源,會有不同顏色標記:
- 綠色: 線程處于活動狀態或準備好使用CPU。也就是說,它處于”運行”或”可運行”狀態。
- 黃色: 線程處于活動狀態,但是在完成其工作之前,它正在等待I / O操作(如文件或網絡I / O)。
- 灰色: 線程正在睡眠,不會消耗任何CPU時間,當線程需要訪問尚未可用的資源時,有時會發生這種情況。要么線程進入自愿性睡眠,要么內核使線程休眠,直到所需的資源可用。
④區域中,不同的方法也會顏色也有所不同:
- 橙色:系統方法
- 藍色:第三方API(包括java語言的api)
- 綠色:App自身方法
2. 通過 Android SDK 自帶的 Debug
- 在開始記錄的點寫上代碼 Debug.startMethodTracing("tracePath") ;
- 在終止記錄的點寫上代碼 Debug.stopMethodTracing() ;
- 通過 adb pull /mnt/sdcard/tracePath.trace .將 trace 導出指定的文件夾中
- 通過 Android studio 打開 trace 文件,界面同 CPU Profiler 差不多。
優點
能清晰分析指定業務、功能塊的方法執行情況(代碼控制)。
3. 通過 DDMS 中的 traceview 查看
前期準備工作(以windows系統為基準)
1、下載Android SDK,下載地址就各顯神通了。
2、解壓或者安裝Android SDK。
3、解壓后的目錄下的{sdk.dir}\tools配置到Path環境中。
使用說明
-
打開window命令指示符,即cmd命令
-
在命令行中輸入monitor或者ddms(區分版本),打開界面
-
如圖點擊紅色圈圈按鈕開始記錄,再次點擊后終止記錄且彈出以下界面
①線程timeLine:線程在執行過程消耗CPU/時間
②執行TimeLine: 時間軸
③方法詳細信息軸:方法以及其調用方法的執行/消耗CPU時間 -
查看main線程,查看執行時間長的時間段(②區域中同一個顏色起止時間)并點擊他,在③區域中會彈出對應的方法棧信息,你就會發現有個Thread.sleep方法阻塞的main線程。
技術說明
- Incl Cpu Time:方法在CPU中執行所有時間(包含其調用的方法所消耗的時間)
- Excl Cpu Time: 方法在CPU中執行的時間(不包含其調用的方法所消耗的時間)
- Incl Real Time:方法運行消耗的所有時間(包含子方法)
- Excl Real Time:方法運行消耗的時間(不包含子方法)
- Calls + Recur Calls/Total :方法調用、遞歸次數(重要指標,防止死循環)
- Cpu Time/Call :該方法平均占用 CPU 的時間(重要指標,可以看出單個方法占用CPU的平均時間,但是要防止在個別調用處出現長時間占用,然后被平均了)
- Real Time/Call:平均執行時間,包括切換、阻塞的時間(重要指標,可以看出單個方法執行的平均時間值,但是要防止在個別調用處出現長時間調用,然后被平均了)
總結
以上是生活随笔為你收集整理的【Android -- 性能优化】启动速度分析工具 — TraceView的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 聊聊ConcurrentHashMap
- 下一篇: Android 工具:TraceView