Android性能優(yōu)化之啟動優(yōu)化工具(TraceView呀页、Systrace、Profiler)

1.traceview使用

Debug.startMethodTracing("myapp")//startMethodTracing有好幾個重載方法
Debug.stopMethodTracing()

?運行之后可以在目錄下生成文件:內部存儲/android/data/cpm.example.myapplication/files/myapp.trace
使用android studio profiler打開trace文件考润,Android官網有詳細的profiler文件使用介紹:https://developer.android.com/studio/profile/cpu-profiler

profiles打開文件

?接下來一起來分析Trace文件:
?Wall Clock time是線程真正執(zhí)行的時間狭园,比如我們測試一個方法執(zhí)行了100ms,從Wall Clock time上看就是100ms
?Thread time上所看到的時間是指CPU執(zhí)行的時間额划,時間只會比100ms少妙啃,使用Thread Time可以讓您更好地了解線程的實際 CPU 使用率中有多少是給定方法或函數消耗的。還可以在方法上右鍵點擊jump to source俊戳。實際優(yōu)化過程中重點關注的就是Thread time,例如發(fā)生了死鎖馆匿,整個wall clock time的時間是很長的抑胎,但是Thread time時間反應出來的才是真實在方法上所消耗的時間
?Threads(12)表示的是線程的總數渐北,trace可以查看十二個線程阿逃,main是我們的主線程,我們可以點任意一個線程查看做了什么赃蛛。
THREADS

?Call Chart最上面表示總時間恃锉,垂直向下依次為被調用方法的時間。其中呕臂,對于系統(tǒng)Api顯示的是黃色破托,被應用調用的方法是綠色的,第三方api(java sdk也屬于第三方)的顏色就是藍色
Call Chart

?Flame Chart火焰圖主要的作用是收集調用方法的時間歧蒋,比如多次調用LayoutInflate.inflate土砂,Flame Chart會把他們都收集到一起。
Flame Chart

?Top Down就是函數的調用列表谜洽,可以依次從上往下查看調用列表萝映。Total顯示的是總調用時間,self顯示的是自身執(zhí)行的時間阐虚,children顯示的是子方法被調用的時間序臂。
Top down

?Bottom UpTop Down是相反的,可以依次從下往上查看調用方实束。
Bottom up

traceview有以下幾點需要注意:
1.運行時開銷嚴重奥秆,整體變慢。因為trace會收集程序運行時所有方法的耗時情況磕洪,因此會拖累整體速度吭练。
2.有了cpu profiler為什么還要用traceview?因為traceview可以埋點析显,cpu profiler不能埋點鲫咽,我們可以結合二者的優(yōu)勢使用签赃。traceview埋點,cpu profiler分析

2. Systrace

查看官方教程
要運行 systrace分尸,請完成以下步驟:

  1. 從 Android Studio 下載并安裝最新的 Android SDK Tools锦聊。
  2. 安裝 Python (v2.7)并將其添加到工作站的執(zhí)行路徑中。
  3. 使用 USB 調試連接將搭載 Android 4.3(API 級別 18)或更高版本的設備連接到開發(fā)系統(tǒng)箩绍。然后在Acticvity中使用Trace孔庭,但是因為只支持API 18以上,所以推薦我們使用TraceCompat材蛛,向下兼容圆到。
TraceCompat.beginSection("start");
TraceCompat.endSection();

4.systrace 命令在 Android SDK Tools 工具包中提供,位于android-sdk/platform-tools/systrace/卑吭,參照文檔使用命令:
python systrace.py -t 10 [other-options] [categories]
例如芽淡,以下命令會調用 systrace 來記錄設備活動并生成一個名為 mynewtrace.html 的 HTML 報告。此類別列表是大多數設備的合理默認列表豆赏。

$ python systrace.py -o mynewtrace.html sched freq idle am wm gfx view binder_driver hal dalvik camera input res

5.在android-sdk/platform-tools/systrace/下生成mynewtrace.html文件挣菲,打開如下所示:

mynewtrace

可以使用快捷鍵快速閱讀該文件,常用快捷鍵說明如下所示:
W: 放大橫軸掷邦,用于查看耗時方法細節(jié)白胀;
S: 縮小橫軸,用于查看整體情況抚岗;
A: 將面板左移或杠;
D: 將面板右移;
M: 高亮某一段耗時內容苟跪。
?從圖中看出CPU核心數廷痘、進程信息、Surfaceflinger等信息件已。我們可以從進程中的frames去分析是否有卡頓存在笋额,每一個F代表著一幀,紅色的F表示丟幀篷扩,android的display的時間大約是16.6ms兄猩,因此超過此時間的在我們看來都是卡頓現象也就是丟幀。
?按下M選擇紅色F如下高亮部分所示鉴未,可以看出繪制時間為201.192ms枢冤,這是遠遠超出16.6ms繪制時間的。
?通過分析選中部分調用方法的細節(jié)以及結合Frames下的Description去分析掉幀的方法铜秆。
具體丟幀的方法

想要深入了解systrace的還可以查看這篇文章

總結

?Trace和Profiler相比淹真,Trace可以進行埋點,精確的計算app啟動所消耗的時間连茧,Profiler雖然是最新的工具核蘸,但是無法做到所有界面都精確計時巍糯。可以使用Trace進行埋點生成文件客扎,再使用Profiler對Trace文件進行卡頓分析祟峦。
?分析卡頓的一般步驟如下所示:
1.在app內找到卡頓的場景,并抓取卡頓發(fā)生時的文件徙鱼;
2.找到發(fā)生問題的應用進程的主線程宅楞,找到發(fā)生問題的問題幀;
3.通過profiler或者systrace中frames紅色高亮部分去判斷具體耗時情況袱吆。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末厌衙,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子绞绒,更是在濱河造成了極大的恐慌迅箩,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件处铛,死亡現場離奇詭異,居然都是意外死亡拐揭,警方通過查閱死者的電腦和手機撤蟆,發(fā)現死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來堂污,“玉大人家肯,你說我怎么就攤上這事∶瞬” “怎么了讨衣?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長式镐。 經常有香客問我反镇,道長,這世上最難降的妖魔是什么娘汞? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任歹茶,我火速辦了婚禮,結果婚禮上你弦,老公的妹妹穿的比我還像新娘惊豺。我一直安慰自己,他們只是感情好禽作,可當我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布尸昧。 她就那樣靜靜地躺著,像睡著了一般旷偿。 火紅的嫁衣襯著肌膚如雪烹俗。 梳的紋絲不亂的頭發(fā)上爆侣,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天,我揣著相機與錄音衷蜓,去河邊找鬼累提。 笑死,一個胖子當著我的面吹牛磁浇,可吹牛的內容都是我干的斋陪。 我是一名探鬼主播,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼置吓,長吁一口氣:“原來是場噩夢啊……” “哼无虚!你這毒婦竟也來了?” 一聲冷哼從身側響起衍锚,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤友题,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后戴质,有當地人在樹林里發(fā)現了一具尸體度宦,經...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年告匠,在試婚紗的時候發(fā)現自己被綠了戈抄。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡后专,死狀恐怖划鸽,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情戚哎,我是刑警寧澤裸诽,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站型凳,受9級特大地震影響丈冬,放射性物質發(fā)生泄漏。R本人自食惡果不足惜啰脚,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一殷蛇、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧橄浓,春花似錦粒梦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至准给,卻和暖如春泄朴,著一層夾襖步出監(jiān)牢的瞬間重抖,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工祖灰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留钟沛,地道東北人。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓局扶,卻偏偏與公主長得像恨统,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子三妈,可洞房花燭夜當晚...
    茶點故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內容