您好,登錄后才能下訂單哦!
Android 中怎么使用TraceView性能分析工具 ,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
TraceView 是 Android SDK 內置的一個工具,它可以加載 trace 文件,用圖形的形式展示代碼的執行時間、次數及調用棧,便于我們分析。
trace 文件是 log 信息文件的一種,可以通過代碼,Android Studio,或者 DDMS 生成。
在想要記錄的地方調用 Debug.startMethodTracing("sample")
,參數指定 trace
文件的名稱。
在結束記錄的地方調用 Debug.stopMethodTracing()
,文件會被保存到 /sdcard/Android/data/packageName/files
文件夾下。
Debug.startMethodTracing("sample"); // 開始 trace
...
Debug.stopMethodTracing(); // 結束 trace
可以使用 adb 命令導出 trace 文件,使用 Android Studio Profiler 或者 DDMS 打開。
點擊工具欄中的 Profiler(Android Studio 版本是 3.4.2), 點擊 CPU 時間軸上的任意位置以打開 CPU Profiler。
1. 事件時間軸:顯示應用中的 Activity 在其生命周期內不斷轉換而經歷各種不同狀態的過程,并指示用戶與設備的交互,包括屏幕旋轉事件。
2. CPU 時間軸 : 顯示應用的實時 CPU 使用率以及應用當前使用的線程總數。通過沿時間線的水平軸移動鼠標,還可以檢查歷史 CPU 使用率數據。
3. 線程活動時間軸:應用進程的所有線程。不同顏色對應的含義:
綠色:表示線程處于活動狀態或準備使用 CPU。即,它正在“運行中”或處于“可運行”狀態。
黃色:表示線程處于活動狀態,但它正在等待一個 I/O 操作(如磁盤或網絡 I/O),然后才能完成它的工作。
灰色:表示線程正在休眠且沒有消耗任何 CPU 時間。當線程需要訪問尚不可用的資源時偶爾會發生這種情況。線程進入自主休眠或內核將此線程置于休眠狀態,直到所需的資源可用。
要開始記錄跟蹤數據,點擊 CPU Profiler 頂部的下拉框選擇適當的記錄配置:
對 Java 方法采樣:在應用的 Java 代碼執行期間,頻繁捕獲應用的調用堆棧。分析器會比較捕獲的數據集,以推導與應用的 Java 代碼執行有關的時間和資源使用信息。
跟蹤 Java 方法 :在運行時檢測應用,以在每個方法調用開始和結束時記錄一個時間戳。系統會收集并比較這些時間戳,以生成方法跟蹤數據,包括時間信息和 CPU 使用率。
對 C/C++ 函數采樣:捕獲應用的原生線程的采樣跟蹤數據。
選擇配置后,點擊 Record
進行跟蹤,交互完成后點擊 Stop
結束數據跟蹤。分析器會分析 trace 數據,如下圖所示。
1. 選擇時間范圍:確定要在跟蹤窗格中檢查所記錄時間范圍的哪一部分。當首次記錄函數跟蹤時,CPU Profiler 將在 CPU 時間線中自動選擇完整長度。如果想僅檢查所記錄時間范圍一小部分的函數跟蹤數據,可以點擊并拖動突出顯示的區域邊緣以修改其長度。
2. 時間戳:用于表示所記錄函數跟蹤的開始和結束時間(相對于分析器從設備開始收集 CPU 使用率信息的時間)。可以點擊時間戳以自動選擇完整記錄。
3. 跟蹤窗格:用于顯示所選的時間范圍和線程的函數跟蹤數據。
4. 跟蹤數據窗格標簽:通過Call Chart(調用圖表)、Flame Chart(火焰圖)、 Top Down 樹或 Bottom Up 樹的形式顯示函數跟蹤。
Call Chart : 水平軸表示函數調用(或調用方)的時間,并沿垂直軸顯示其被調用者。對系統 API 的函數調用顯示為橙色,對應用自有函數的調用顯示為綠色,對第三方 API(包括 Java 語言 API)的函數調用顯示為藍色。
Flame Chart: 一個倒置的調用圖表,其中水平軸不再代表時間線,它表示每個函數相對的執行時間。
Top Down:顯示一個函數調用列表,在該列表中展開函數節點會顯示函數的被調用方。
Bottom Up:顯示一個函數調用列表,在該列表中展開函數節點將顯示函數的調用方。
5. 時間參考菜單 :確定如何測量每個函數調用的時間信息:
Wall clock time:實際經過的時間。
Thread time:實際經過的時間減去線程沒有消耗 CPU 資源的時間。
DDMS 即 Dalvik Debug Monitor Server ,是 Android 調試監控工具,它為我們提供了截圖,查看 log,查看視圖層級,查看內存使用等功能。
Android Studio 3.0 后可在 Android SDK 的 tools
目錄,找到 monitor.bat
,使用命令行啟動它,就能打開 DDMS。
DDMS 界面點擊 Start Method Profiling
按鈕,開始記錄 trace,同一個按鈕停止 trace。DDMS 會自動啟用 TraceView 加載 trace 文件,如下圖:
圖中上半部分展示了不同線程的執行時間,其中不同的顏色代表不同的方法,同一顏色越長,說明執行時間越長,空白表示這個時間段內沒有執行內容。
下半部分展示了不同方法的執行時間信息。各個指標的含義:
Incl Cpu Time:方法占用的 CPU 時間(包括調用子函數所消耗的時間)。
Excl Cpu Time:方法自身占用的 CPU 時間(不包括調用其他方法所消耗的時間)。
Incl Real Time:方法運行的真實時間(包括調用子函數所消耗的時間)。
Excl Real Time:方法自身運行的真實時間(不包括調用其他方法所消耗的時間)。
Calls+RecurCalls/Total:方法被調用的次數+重復調用的次數。
Cpu Time/Call:方法調用 CPU 時間與調用次數的比,相當于方法平均執行時間。
Real Time/Call:同 Cpu Time/Call 類似,只不過統計單位換成了真實時間。
在分析耗時的時候一般有兩種情況:
調用次數不多。但是,本身就非常耗時。
本身不是很耗時。但是,調用非常頻繁。
第一種情況,可以使用 Cpu Time
來查看它的耗時情況。
第二種情況,可以使用 Calls+RecurCalls/Total
來查看它的調用情況。
關于Android 中怎么使用TraceView性能分析工具 問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。