app 性能

五陵年少金市东,银鞍白马渡春风。这篇文章主要讲述app 性能相关的知识,希望能为你提供帮助。
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性能测试和分析工具, 先上个图:
![性能分析工具]
 
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浏览器打开查看. 界面如下:
 
app 性能

文章图片
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层级, 提升布局速度.
 
app 性能

文章图片
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
  • 说明
    一个图形化的工具, 用来展示和分析方法的执行时间.
 
app 性能

文章图片
TraceView
  • 文档
    • https://developer.android.com/studio/profile/traceview.html
    • https://developer.android.com/studio/profile/traceview-walkthru.html
  • 作用
    • 分析方法调用栈以及其执行时间, 优化方法执行.
1.5 Memory Monitor
  • 说明
    内存使用检测器, 可以实时检测当前Application的内存使用和释放等信息, 并以图形化界面展示.
 
app 性能

文章图片
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的开发者模式中也提供了较多的用来监测性能的选项, 可以用下:
 
app 性能

文章图片
Developer options2, 第三方工具
以下工具全部开源, 开源万岁...
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 性能】欢迎大家分享自己常用的App性能分析工具, 共同学习~


作者:anly_jun
链接:https://www.jianshu.com/p/da2a4bfcba68
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

























    推荐阅读