溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Android 中怎么使用TraceView性能分析工具

發(fā)布時(shí)間:2021-06-26 14:38:01 來(lái)源:億速云 閱讀:1082 作者:Leah 欄目:大數(shù)據(jù)

Android 中怎么使用TraceView性能分析工具 ,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

TraceView 是什么

TraceView 是 Android SDK 內(nèi)置的一個(gè)工具,它可以加載 trace 文件,用圖形的形式展示代碼的執(zhí)行時(shí)間、次數(shù)及調(diào)用棧,便于我們分析。

 

生成 trace 文件

trace 文件是 log 信息文件的一種,可以通過(guò)代碼,Android Studio,或者 DDMS 生成。

 

使用代碼生成 trace 文件

在想要記錄的地方調(diào)用 Debug.startMethodTracing("sample"),參數(shù)指定 trace 文件的名稱(chēng)。

在結(jié)束記錄的地方調(diào)用 Debug.stopMethodTracing(),文件會(huì)被保存到 /sdcard/Android/data/packageName/files 文件夾下。

Debug.startMethodTracing("sample"); // 開(kāi)始 trace
...
Debug.stopMethodTracing();  // 結(jié)束 trace
 

可以使用 adb 命令導(dǎo)出 trace 文件,使用 Android Studio Profiler 或者 DDMS 打開(kāi)。

 

使用 Android Studio 生成 trace 文件

點(diǎn)擊工具欄中的 Profiler(Android Studio 版本是 3.4.2), 點(diǎn)擊 CPU 時(shí)間軸上的任意位置以打開(kāi) CPU Profiler。

Android 中怎么使用TraceView性能分析工具

1.  事件時(shí)間軸:顯示應(yīng)用中的 Activity 在其生命周期內(nèi)不斷轉(zhuǎn)換而經(jīng)歷各種不同狀態(tài)的過(guò)程,并指示用戶與設(shè)備的交互,包括屏幕旋轉(zhuǎn)事件。

2. CPU 時(shí)間軸 : 顯示應(yīng)用的實(shí)時(shí) CPU 使用率以及應(yīng)用當(dāng)前使用的線程總數(shù)。通過(guò)沿時(shí)間線的水平軸移動(dòng)鼠標(biāo),還可以檢查歷史 CPU 使用率數(shù)據(jù)。

3. 線程活動(dòng)時(shí)間軸:應(yīng)用進(jìn)程的所有線程。不同顏色對(duì)應(yīng)的含義:

  • 綠色:表示線程處于活動(dòng)狀態(tài)或準(zhǔn)備使用 CPU。即,它正在“運(yùn)行中”或處于“可運(yùn)行”狀態(tài)。

  • 黃色:表示線程處于活動(dòng)狀態(tài),但它正在等待一個(gè) I/O 操作(如磁盤(pán)或網(wǎng)絡(luò) I/O),然后才能完成它的工作。

  • 灰色:表示線程正在休眠且沒(méi)有消耗任何 CPU 時(shí)間。當(dāng)線程需要訪問(wèn)尚不可用的資源時(shí)偶爾會(huì)發(fā)生這種情況。線程進(jìn)入自主休眠或內(nèi)核將此線程置于休眠狀態(tài),直到所需的資源可用。

要開(kāi)始記錄跟蹤數(shù)據(jù),點(diǎn)擊 CPU Profiler 頂部的下拉框選擇適當(dāng)?shù)挠涗浥渲茫?/p>

  • 對(duì) Java 方法采樣:在應(yīng)用的 Java 代碼執(zhí)行期間,頻繁捕獲應(yīng)用的調(diào)用堆棧。分析器會(huì)比較捕獲的數(shù)據(jù)集,以推導(dǎo)與應(yīng)用的 Java 代碼執(zhí)行有關(guān)的時(shí)間和資源使用信息。

  • 跟蹤 Java 方法 :在運(yùn)行時(shí)檢測(cè)應(yīng)用,以在每個(gè)方法調(diào)用開(kāi)始和結(jié)束時(shí)記錄一個(gè)時(shí)間戳。系統(tǒng)會(huì)收集并比較這些時(shí)間戳,以生成方法跟蹤數(shù)據(jù),包括時(shí)間信息和 CPU 使用率。

  • 對(duì) C/C++ 函數(shù)采樣:捕獲應(yīng)用的原生線程的采樣跟蹤數(shù)據(jù)。


Android 中怎么使用TraceView性能分析工具  

選擇配置后,點(diǎn)擊 Record 進(jìn)行跟蹤,交互完成后點(diǎn)擊 Stop 結(jié)束數(shù)據(jù)跟蹤。分析器會(huì)分析 trace 數(shù)據(jù),如下圖所示。

Android 中怎么使用TraceView性能分析工具

1. 選擇時(shí)間范圍:確定要在跟蹤窗格中檢查所記錄時(shí)間范圍的哪一部分。當(dāng)首次記錄函數(shù)跟蹤時(shí),CPU Profiler 將在 CPU 時(shí)間線中自動(dòng)選擇完整長(zhǎng)度。如果想僅檢查所記錄時(shí)間范圍一小部分的函數(shù)跟蹤數(shù)據(jù),可以點(diǎn)擊并拖動(dòng)突出顯示的區(qū)域邊緣以修改其長(zhǎng)度。

2. 時(shí)間戳:用于表示所記錄函數(shù)跟蹤的開(kāi)始和結(jié)束時(shí)間(相對(duì)于分析器從設(shè)備開(kāi)始收集 CPU 使用率信息的時(shí)間)??梢渣c(diǎn)擊時(shí)間戳以自動(dòng)選擇完整記錄。

3. 跟蹤窗格:用于顯示所選的時(shí)間范圍和線程的函數(shù)跟蹤數(shù)據(jù)。

4. 跟蹤數(shù)據(jù)窗格標(biāo)簽:通過(guò)Call Chart(調(diào)用圖表)、Flame Chart(火焰圖)、 Top Down 樹(shù)或 Bottom Up 樹(shù)的形式顯示函數(shù)跟蹤。

  • Call Chart : 水平軸表示函數(shù)調(diào)用(或調(diào)用方)的時(shí)間,并沿垂直軸顯示其被調(diào)用者。對(duì)系統(tǒng) API 的函數(shù)調(diào)用顯示為橙色,對(duì)應(yīng)用自有函數(shù)的調(diào)用顯示為綠色,對(duì)第三方 API(包括 Java 語(yǔ)言 API)的函數(shù)調(diào)用顯示為藍(lán)色。

  • Flame Chart: 一個(gè)倒置的調(diào)用圖表,其中水平軸不再代表時(shí)間線,它表示每個(gè)函數(shù)相對(duì)的執(zhí)行時(shí)間。

  • Top Down:顯示一個(gè)函數(shù)調(diào)用列表,在該列表中展開(kāi)函數(shù)節(jié)點(diǎn)會(huì)顯示函數(shù)的被調(diào)用方。

  • Bottom Up:顯示一個(gè)函數(shù)調(diào)用列表,在該列表中展開(kāi)函數(shù)節(jié)點(diǎn)將顯示函數(shù)的調(diào)用方。

5. 時(shí)間參考菜單 :確定如何測(cè)量每個(gè)函數(shù)調(diào)用的時(shí)間信息:

  • Wall clock time:實(shí)際經(jīng)過(guò)的時(shí)間。

  • Thread time:實(shí)際經(jīng)過(guò)的時(shí)間減去線程沒(méi)有消耗 CPU 資源的時(shí)間。

 

使用 DDMS 生成 trace 文件

DDMS 即 Dalvik Debug Monitor Server ,是 Android 調(diào)試監(jiān)控工具,它為我們提供了截圖,查看 log,查看視圖層級(jí),查看內(nèi)存使用等功能。

Android Studio 3.0 后可在 Android SDK 的 tools 目錄,找到 monitor.bat,使用命令行啟動(dòng)它,就能打開(kāi) DDMS。

DDMS 界面點(diǎn)擊 Start Method Profiling 按鈕,開(kāi)始記錄 trace,同一個(gè)按鈕停止 trace。DDMS 會(huì)自動(dòng)啟用 TraceView 加載 trace 文件,如下圖:

Android 中怎么使用TraceView性能分析工具  

圖中上半部分展示了不同線程的執(zhí)行時(shí)間,其中不同的顏色代表不同的方法,同一顏色越長(zhǎng),說(shuō)明執(zhí)行時(shí)間越長(zhǎng),空白表示這個(gè)時(shí)間段內(nèi)沒(méi)有執(zhí)行內(nèi)容。

下半部分展示了不同方法的執(zhí)行時(shí)間信息。各個(gè)指標(biāo)的含義:

  • Incl Cpu Time:方法占用的 CPU 時(shí)間(包括調(diào)用子函數(shù)所消耗的時(shí)間)。

  • Excl Cpu Time:方法自身占用的 CPU 時(shí)間(不包括調(diào)用其他方法所消耗的時(shí)間)。

  • Incl Real Time:方法運(yùn)行的真實(shí)時(shí)間(包括調(diào)用子函數(shù)所消耗的時(shí)間)。

  • Excl Real Time:方法自身運(yùn)行的真實(shí)時(shí)間(不包括調(diào)用其他方法所消耗的時(shí)間)。

  • Calls+RecurCalls/Total:方法被調(diào)用的次數(shù)+重復(fù)調(diào)用的次數(shù)。

  • Cpu Time/Call:方法調(diào)用 CPU 時(shí)間與調(diào)用次數(shù)的比,相當(dāng)于方法平均執(zhí)行時(shí)間。

  • Real Time/Call:同 Cpu Time/Call 類(lèi)似,只不過(guò)統(tǒng)計(jì)單位換成了真實(shí)時(shí)間。

在分析耗時(shí)的時(shí)候一般有兩種情況:

  • 調(diào)用次數(shù)不多。但是,本身就非常耗時(shí)。

  • 本身不是很耗時(shí)。但是,調(diào)用非常頻繁。

第一種情況,可以使用 Cpu Time 來(lái)查看它的耗時(shí)情況。

第二種情況,可以使用 Calls+RecurCalls/Total 來(lái)查看它的調(diào)用情況。


關(guān)于Android 中怎么使用TraceView性能分析工具 問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI