android各種工具分類
-
app 每幀耗時追蹤
- GPU 呈現(xiàn)模式分析
android 手機自帶功能檀咙,可以查看每一幀的耗時,和不同類型任務(wù)耗時
這是官方給的顏色解釋
- GPU 呈現(xiàn)模式分析
Swap Buffers:表示處理任務(wù)的時間屏镊,也可以說是CPU等待GPU完成任務(wù)的時間,線條越高宋距,表示GPU做的事情越多沐扳;
Command Issue:表示執(zhí)行任務(wù)的時間,這部分主要是Android進(jìn)行2D渲染顯示列表的時間织鲸,為了將內(nèi)容繪制到屏幕上舔腾,Android需要使用Open GL ES的API接口來繪制顯示列表,紅色線條越高表示需要繪制的視圖更多搂擦;
Sync & Upload:表示的是準(zhǔn)備當(dāng)前界面上有待繪制的圖片所耗費的時間稳诚,為了減少該段區(qū)域的執(zhí)行時間,我們可以減少屏幕上的圖片數(shù)量或者是縮小圖片的大衅偬摺采桃;
Draw:表示測量和繪制視圖列表所需要的時間,藍(lán)色線條越高表示每一幀需要更新很多視圖丘损,或者View的onDraw方法中做了耗時操作;
Measure/Layout:表示布局的onMeasure與onLayout所花費的時間工扎,一旦時間過長徘钥,就需要仔細(xì)檢查自己的布局是不是存在嚴(yán)重的性能問題;
Animation:表示計算執(zhí)行動畫所需要花費的時間肢娘,包含的動畫有ObjectAnimator呈础,ViewPropertyAnimator,Transition等等橱健。一旦這里的執(zhí)行時間過長而钞,就需要檢查是不是使用了非官方的動畫工具或者是檢查動畫執(zhí)行的過程中是不是觸發(fā)了讀寫操作等等;
Input Handling:表示系統(tǒng)處理輸入事件所耗費的時間拘荡,粗略等于對事件處理方法所執(zhí)行的時間臼节。一旦執(zhí)行時間過長,意味著在處理用戶的輸入事件的地方執(zhí)行了復(fù)雜的操作珊皿;
Misc Time/Vsync Delay:表示在主線程執(zhí)行了太多的任務(wù)网缝,導(dǎo)致UI渲染跟不上vSync的信號而出現(xiàn)掉幀的情況;(主線程阻塞,太多耗時操作)
6.x 中的圖中蟋定,把顏色分的更新了粉臊,頁更能表現(xiàn)出更多的任務(wù)來,仔細(xì)看最底下的深綠色新添加的驶兜,是我們需要仔關(guān)注的扼仲,表示 UI線程因為任務(wù)多远寸,造成渲染界面延遲。
systrace
studio DDMS 里面的工具屠凶,可以查看每一幀的耗時驰后,和造成耗時的方法-
app 性能追蹤
- TraceView
追蹤方法的執(zhí)行情況,查看方法的耗時和 cpu 資源消耗 - blockcanary
在主線程 looper 中添加 printer阅畴,利用 looper 在分發(fā)任務(wù)執(zhí)行前后會調(diào)用 printer 的機制倡怎,判斷任務(wù)前后的耗時,超過閥值就生成一條日志提醒
- TraceView
-
內(nèi)存追蹤
- MAT
- Memory Monitor
- Allocation Gracker
- Heap Viewer
- LeakCanary
-
GPU性能分析
- Hierarchy Viewer
- 調(diào)試 GPU過度繪制
代碼分析工具
lint
我對性能優(yōu)化理解
上面我羅列了這么多工具贱枣,根本目的還是為了能夠在我們需要的時候發(fā)現(xiàn)問題监署,定位問題工具只不過是具體的一種手段,這里我說下自己的體會
性能優(yōu)化的核心做法無外乎4種:
- 減少重復(fù)工作
這里側(cè)重于代碼的具體編寫纽哥,能 new 一個對象的钠乏,你非要 new 10個對象 - 優(yōu)化執(zhí)行時機
典型的案例是在頁面的 onCreate 函數(shù)里,你干好多耗時操作春塌,讓一些不是很著急的工作去和頁面加載工作搶資源晓避,這里耗時操作可以在做一個延遲加載,在頁面顯示后再去干 - 工作量拆分
打個比喻好比工作量對于一個人來說很大只壳,那么就多找?guī)讉€人干俏拱。具體的例子有微信 V2.0 版的架構(gòu),就把 webview 放到單獨一個進(jìn)程去干吼句,在操作系統(tǒng)來看一個進(jìn)程就好比一個人一樣的 - 優(yōu)化架構(gòu)
高玩都說一個好的架構(gòu)比代碼優(yōu)化重要的多锅必,打個比喻,圖錢加載現(xiàn)在都是用一個全局的緩存惕艳,但是你在每一個頁面里都維護(hù)一個緩存搞隐,那么你每個頁面里的緩存維護(hù)的再好,性能也比不上好的架構(gòu)只需維護(hù)一個緩存
- android性能跟蹤分析工具系列 - 各種理論/方法簡介
- android性能跟蹤分析工具系列 - GPU 呈現(xiàn)模式分析
- android性能跟蹤分析工具系列 - systrace
- android性能跟蹤分析工具系列 - TraceView
- android性能跟蹤分析工具系列 - Hierarchy Viewer
- android性能跟蹤分析工具系列 - LeakCanary
- android性能跟蹤分析工具系列 - blockcanary
- android性能跟蹤分析工具系列 - Memory monitor - jump java heap
- android性能跟蹤分析工具系列 - StallBuster