App性能之優化

今天聊下個人比較慣用的一些App性能測試和分析工具, 先上個圖:
![性能分析工具]

這裏寫圖片描述
tools_mind_node
本文暫不對工具的使用做過多的深入.
在後續的具體實例中會具體說明怎麼用這些工具來達成分析目的和解決問題的.
1, 官方工具

一般來說, 學習一門新的技術, 最應該做的就是閱讀其官方文檔, 那是最權威的.
Android本身給我們提供了很多App性能測試和分析工具, 而且大部分都集成到Android Studio或DDMS中, 非常方便使用.

1.1 StrictMode

說明
顧名思義, “嚴格模式”, 主要用來限制應用做一些不符合性能規範的事情. 一般用來檢測主線程中的耗 時操作和阻塞. 開啓StrictMode後, 如果線程中做一些諸如讀寫文件, 網絡訪問等操作, 將會在Log console輸出一些警告, 警告信息包含Stack Trace來顯示哪個地方出了問題.

文檔

https://developer.android.com/reference/android/os/StrictMode.html
作用

主要用來做主線程優化分析
1.2 Systrace

說明
Systrace是一個收集和檢測時間信息的工具, 它能顯示CPU和時間被消耗在哪兒了, 每個進程和線程都在其CPU時間片內做了什麼事兒. 而且會指示哪個地方出了問題, 以及給出Fix建議.
其以trace文件(html)的方式記錄. 可以直接用Chrome瀏覽器打開查看. 界面如下:
這裏寫圖片描述
Systrace
文檔

https://developer.android.com/studio/profile/systrace.html
https://developer.android.com/studio/profile/systrace-walkthru.html
https://developer.android.com/studio/profile/systrace-commandline.html?hl=fy
作用

作用很多, 個人主要用來分析UI的繪製時間, 結合Hierarchy Viewer來提升UI性能.
也可以用來發現耗時操作.
1.3 Hierarchy Viewer

說明
Hierarchy Viewer提供了一個可視化的界面來觀測佈局的層級, 讓我們可以優化佈局層級, 刪除多餘的不必要的View層級, 提升佈局速度.
這裏寫圖片描述
Hierarchy Viewer
有必要說明下的是:
上圖紅框標出的三個點是關鍵分析數據. 左起依次代表View的Measure, Layout和Draw的性能. 另外顏色表示該View的該項時間指數, 分爲:

  • 綠色, 表示該View的此項性能比該View Tree中超過50%的View都要快.
  • 黃色, 表示該View的此項性能比該View Tree中超過50%的View都要慢.
  • 紅色, 表示該View的此項性能是View Tree中最慢的.
    文檔

https://developer.android.com/studio/profile/hierarchy-viewer.html
https://developer.android.com/studio/profile/hierarchy-viewer-walkthru.html
https://developer.android.com/studio/profile/hierarchy-viewer-setup.html
https://developer.android.com/studio/profile/optimize-ui.html#HierarchyViewer
作用

用來做View層級分析, 可以分析出View Tree中的性能阻塞點, 以便對症下藥, 提升佈局性能.
Hierarchy Viewer需要Root的機器(產品機沒有開啓ViewServer)纔可以執行.
可以使用第三方的開源的ViewServer來協助我們在未Root的機器上使用Hierarchy Viewer分析.
1.4 TraceView

說明
一個圖形化的工具, 用來展示和分析方法的執行時間.

TraceView
文檔

https://developer.android.com/studio/profile/traceview.html
https://developer.android.com/studio/profile/traceview-walkthru.html
作用

分析方法調用棧以及其執行時間, 優化方法執行.
1.5 Memory Monitor

說明
內存使用檢測器, 可以實時檢測當前Application的內存使用和釋放等信息, 並以圖形化界面展示.

Memory Monitor
文檔

https://developer.android.com/studio/profile/am-memory.html
https://developer.android.com/studio/profile/heap-viewer-walkthru.html
https://developer.android.com/studio/profile/allocation-tracker-walkthru.html
作用

用來做內存分析, 內存泄露排查的不二之選. 可以結合heap viewer, allocation tracker來分析.
可以導出hprof文件結合第三方的MAT工具分析泄露點.
1.6 Other Monitor

說明
Android Studio的Monitor還提供了其他三個Motinor — CPU, GPU, Network.

文檔

https://developer.android.com/studio/profile/am-cpu.html
https://developer.android.com/studio/profile/am-gpu.html
https://developer.android.com/studio/profile/am-network.html
作用

分別用來跟蹤監測CPU,GPU和Network的使用極其變化, 可以作爲網絡優化, 流量優化和渲染優化等的一個指導. (個人並不常用到~)
1.7 其他

Android的開發者模式中也提供了較多的用來監測性能的選項, 可以用下:

Developer options
2, 第三方工具

以下工具全部開源, 開源萬歲…
2.1 Google的Battery Historian

說明
Google出品, 通過Android系統的bugreport文件來做電量使用分析的工具.

文檔

https://github.com/google/battery-historian
作用

用來做電量使用分析.
2.2 網易的

說明
針對Android App的CPU, 內存, 網絡, 電量等多項綜合的測試分析.

文檔

https://github.com/NetEase/Emmagee
作用

比官方工具更適合國人使用來做App的整體性能分析.
2.3 Square

說明
Square出品, 必屬精品.
類似與App探針的內存泄露監測工具.

文檔

https://github.com/square/leakcanary
作用

集成到App中, 用來做內存問題預防最好不過了.
2.4 AndroidDevMetrics

說明
一個library, 用來檢測Activity生命週期執行性能, Dagger2注入性能以及幀率性能的工具.

文檔

https://github.com/frogermcs/AndroidDevMetrics
作用

如果你的應用使用的Dagger2, 這個就比較必要了.
3, 結語

MAT沒有側重的提, 是因爲這個工具在ADT時代比較常用, AS2.0之後, 本身的Memory Monitor越來越強大, 結合日益完善的第三方工具基本上可以完成內存方面的優化了.
歡迎大家分享自己常用的App性能分析工具, 共同學習~
^_^

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章