1. 程式人生 > >app 性能

app 性能

模式 hiera 三方 span -m clip mea developer google

Android App優化之性能分析工具 https://www.jianshu.com/p/da2a4bfcba68

--------------

系列文:

  1. 背景:Android App優化, 要怎麽做?
  2. Android App優化之性能分析工具
  3. Android App優化之提升你的App啟動速度之理論基礎
  4. Android App優化之提升你的App啟動速度之實例挑戰
  5. Android App優化之Layout怎麽擺
  6. Android App優化之ANR詳解
  7. Android App優化之消除卡頓
  8. Android App優化之內存優化
  9. Android App優化之持久電量
  10. Android 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性能分析工具, 共同學習~



作者:anly_jun
鏈接:https://www.jianshu.com/p/da2a4bfcba68
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明出處。

app 性能