Android軟件性能分析是Android開發(fā)人員所必備的技能之一玻墅,在軟件開發(fā)過程中呐芥,想必很多讀者都遇到過系統(tǒng)性能問題。而解決系統(tǒng)性能問題的幾個主要步驟是:
- 測評:對系統(tǒng)進行大量有針對性的測試奋岁,以得到合適的測試數(shù)據(jù)思瘟。
- 分析系統(tǒng)瓶頸:分析測試數(shù)據(jù),找到其中的hotspot(熱點闻伶,即bottleneck)滨攻。
- 性能優(yōu)化:對hotspot相關(guān)的代碼進行優(yōu)化。
本文主要講如何使用TraceView性能測試工具虾攻。
Traceview簡介
Traceview是Android平臺特有的數(shù)據(jù)采集和分析工具铡买,Traceview本身只是一個數(shù)據(jù)分析工具,而數(shù)據(jù)的采集則需要使用Android SDK中的Debug類或者利用DDMS工具霎箍。二者的用法如下:
- 開發(fā)者在一些關(guān)鍵代碼段開始前調(diào)用Android SDK中Debug類的startMethodTracing函數(shù),并在關(guān)鍵代碼段結(jié)束前調(diào)用stopMethodTracing函數(shù)澡为。這兩個函數(shù)運行過程中將采集運行時間內(nèi)該應(yīng)用所有線程(注意漂坏,只能是Java線程)的函數(shù)執(zhí)行情況,并將采集數(shù)據(jù)保存到/mnt/sdcard/下的一個文件中媒至。開發(fā)者然后需要利用SDK中的Traceview工具來分析這些數(shù)據(jù)顶别。
- 借助Android SDK中的DDMS工具。DDMS可采集系統(tǒng)中某個正在運行的進程的函數(shù)調(diào)用信息拒啰。對開發(fā)者而言驯绎,此方法適用于沒有目標應(yīng)用源代碼的情況。
TraceView使用
主要講解Android SDK中的DDMS工具
1.打開工具
打開工具.png
示例圖.png
2.TraceView界面
Traceview界面比較復雜谋旦,其UI劃分為上下兩個面板剩失,
- Timeline Panel(時間線面板)
- Profile Panel(分析面板)。
Timeline Panel又可細分為左右兩個Pane:
Timeline .png
- 左邊Pane顯示的是測試數(shù)據(jù)中所采集的線程信息册着。
- 右邊Pane所示為時間線拴孤,時間線上是每個線程測試時間段內(nèi)所涉及的函數(shù)調(diào)用信息。
Profile Panel是Traceview的核心界面甲捏,其內(nèi)涵非常豐富演熟。
Paste_Image.png
對開發(fā)者而言,一定要了解Profile Panel中各列的含義司顿。
各列的含義.png
3.如何利用Traceview來查找hotspot
- 一類是調(diào)用次數(shù)不多芒粹,但每次調(diào)用卻需要花費很長時間的函數(shù)。
選擇按Cpu Time/Call進行降序排序(從上之下排列大溜,每項的耗費時間由高到低)
- 一類是那些自身占用時間不長化漆,但調(diào)用卻非常頻繁的函數(shù)。
點擊Call/Recur Calls/Total列猎提,使之按降序排列获三。關(guān)注點放在那些調(diào)用頻繁并且占用資源較多的函數(shù)旁蔼。