SysTrace與TraceView性能分析

一、SysTrace簡(jiǎn)介

Systrace允許你監(jiān)視和跟蹤Android系統(tǒng)的行為(trace)。它會(huì)告訴你系統(tǒng)都在哪些工作上花費(fèi)時(shí)間、CPU周期都用在哪里,甚至你可以看到每個(gè)線程、進(jìn)程在指定時(shí)間內(nèi)都在干嘛。它同時(shí)還會(huì)突出觀測(cè)到的問題,從垃圾回收到渲染內(nèi)容都可能是問題對(duì)象,甚至提供給你建議的解決方案。但是不能確定具體有問題的代碼在哪里,這里可用用traceview工具。在Android平臺(tái)中,Systrace主要由3部分組成:   
內(nèi)核部分:Systrace利用了Linux Kernel中的ftrace功能。所以,如果要使用Systrace的話,必須開啟kernel中和ftrace相關(guān)的模塊。   
數(shù)據(jù)采集部分:Android定義了一個(gè)Trace類。應(yīng)用程序可利用該類把統(tǒng)計(jì)信息輸出給ftrace。同時(shí),Android還有一個(gè)atrace程序,它可以從ftrace中讀取統(tǒng)計(jì)信息然后交給數(shù)據(jù)分析工具來處理。   
數(shù)據(jù)分析工具:Android提供一個(gè)systrace.py(python腳本文件,位于Android SDK目錄/tools/systrace中,其內(nèi)部將調(diào)用atrace程序)用來配置數(shù)據(jù)采集的方式(如采集數(shù)據(jù)的標(biāo)簽、輸出文件名等)和收集ftrace統(tǒng)計(jì)數(shù)據(jù)并生成一個(gè)結(jié)果網(wǎng)頁文件供用戶查看。 從本質(zhì)上說,Systrace是對(duì)Linux Kernel中ftrace的封裝。應(yīng)用進(jìn)程需要利用Android提供的Trace類來使用Systrace.

二、生成Trace

生成Trace分析文檔的步驟如下:
1.打開手機(jī)調(diào)試模式,usb連接手機(jī),運(yùn)行APP
2.啟動(dòng)Systrace(命令行,Eclipse,Android Studio都可)
3.手機(jī)上做想要被trace的任何操作

2.1 Android Studio啟動(dòng)

1.打開Tools > Android > Android Device Monitor.
2.選中設(shè)備,點(diǎn)擊Capture System
3.配置trace,點(diǎn)擊OK
示例:
1.在SysTrace中選擇需要項(xiàng),如:CPU內(nèi)存使用,Graphics圖像幀數(shù),View System視圖的使用等。
2.時(shí)長設(shè)置5秒,需要在5秒內(nèi) 執(zhí)行卡頓操作業(yè)務(wù)的代碼塊。之后會(huì)在指定目錄生成trace.html文件。
3.我的項(xiàng)目里云書架同步下載比較卡,就著重分析這部分。

SysTrace_Config.png

三、分析Trace

分析前,介紹一些技巧:

3.1 監(jiān)視幀數(shù)

F圓圈表示一幀(Frame),有綠,黃,紅三種狀態(tài),渲染時(shí)間依次遞增。
正常繪制是1秒60幀,大約一幀16.6毫秒,在這個(gè)值以下是正常顏色綠色,如果超過它就會(huì)變成紅色、黃色。非綠色的都說明有問題。單點(diǎn)擊后可查看Frame詳細(xì)信息,根據(jù)警報(bào)提示解決問題。

3.2 快捷鍵

quick_key.png

3.3分析文件

用Google瀏覽器打開生成的trace文件,可以進(jìn)行性能分析:下面是我項(xiàng)目云書架同步時(shí)的SysTrace結(jié)果圖。

SysTrace_alert.png

上圖是一個(gè)ui卡頓的trace記錄,橫軸是時(shí)間,堅(jiān)軸是線程/進(jìn)程。
可以看到,很多帶“F”的模塊放大區(qū)域會(huì)看到Inefficient ListView recycling/rebinding 等Alert提示
當(dāng)我們點(diǎn)擊了Alerts或者點(diǎn)擊右邊的Alerts列表中的任何一點(diǎn)我們可以看到相對(duì)應(yīng)的優(yōu)化提示以及可能會(huì)出現(xiàn)優(yōu)化的視頻教程鏈接。

圖片1.jpg

我們可以點(diǎn)擊一塊Frames中的F來查看 ,通過按下m鍵查看這一幀到下一幀所花費(fèi)的時(shí)間以及哪個(gè)方法被調(diào)用的最長。
可以看到這時(shí)間>16.6ms,系統(tǒng)要求UI的60fps水準(zhǔn)所以系統(tǒng)會(huì)報(bào)出黃色的警告。然后我們從Description中可以讀出到底是哪里出了問題。

圖片2.jpg

Description描述為 Inefficient ListView recycling/rebinding ,我們初步定位是ListView列表問題,下面我們用TraceView詳細(xì)分析具體哪個(gè)方法,哪行代碼耗時(shí)或重復(fù)多次調(diào)用。


TraceView

關(guān)于TraceView用法及分析 上一節(jié)講過 TraceView優(yōu)化工具,直接上分析圖:

traceview_analy.png

主要查看 占用CPU較大或調(diào)用次數(shù)過多的函數(shù),可以看到 云書架里 dealWithCloudBook函數(shù) :
**Cpu Time : CPU占用率 5.4% **
Calls+Recurcalls:調(diào)用14次
好,開始你的表演吧,問題查到了,如何解決:
1.一部分是項(xiàng)目邏輯問題,稍微業(yè)務(wù)重構(gòu)就可以
2.還有事Google自帶或版本升級(jí)造成的

解決問題

最后,追蹤到代碼,發(fā)現(xiàn)下載過程創(chuàng)建過多線程,優(yōu)化處理即可。

適用平臺(tái)

Android Version: 6.0及以上 Platform: 通用

QQ技術(shù)交流群:570847156 歡迎入坑

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,763評(píng)論 6 539
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,238評(píng)論 3 428
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,823評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,604評(píng)論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,339評(píng)論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,713評(píng)論 1 328
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,712評(píng)論 3 445
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,893評(píng)論 0 289
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,448評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,201評(píng)論 3 357
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,397評(píng)論 1 372
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,944評(píng)論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,631評(píng)論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,033評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,321評(píng)論 1 293
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,128評(píng)論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,347評(píng)論 2 377

推薦閱讀更多精彩內(nèi)容