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