Android App优化之常用性能分析工具

作者:anly_jun
链接:https://www.jianshu.com/p/da2a4bfcba68

本文暂不对工具的使用做过多的深入,在后续的具体实例中会具体说明怎么用这些工具来达成分析目的和解决问题的。

话不多少,先看一下常用App性能测试和分析工具,如图:


tools_mind_node.png

一、官方工具

一般来说,学习一门新的技术,最应该做的就是阅读其官方文档,那是最权威的。Android本身给我们提供了很多App性能测试和分析工具,而且大部分都集成到Android Studio或DDMS中,非常方便使用。

1.1 StrictMode

1.1.1 说明

顾名思义, "严格模式", 主要用来限制应用做一些不符合性能规范的事情. 一般用来检测主线程中的耗 时操作和阻塞. 开启StrictMode后, 如果线程中做一些诸如读写文件, 网络访问等操作, 将会在Log console输出一些警告, 警告信息包含Stack Trace来显示哪个地方出了问题.

1.1.2 文档

点我直达

1.1.3 作用

主要用来做主线程优化分析

1.2 Systrace

1.2.1 说明

Systrace是一个收集和检测时间信息的工具, 它能显示CPU和时间被消耗在哪儿了, 每个进程和线程都在其CPU时间片内做了什么事儿. 而且会指示哪个地方出了问题, 以及给出Fix建议.
其以trace文件(html)的方式记录. 可以直接用Chrome浏览器打开查看. 界面如下:


Systrace.png

1.2.2 文档

1.2.3 作用

  • 作用很多, 个人主要用来分析UI的绘制时间, 结合Hierarchy Viewer来提升UI性能.
  • 也可以用来发现耗时操作.

1.3 Hierarchy Viewer

Hierarchy Viewer需要Root的机器(产品机没有开启ViewServer)才可以执行. 可以使用第三方的开源的ViewServer来协助我们在未Root的机器上使用Hierarchy Viewer分析.

1.3.1 说明

Hierarchy Viewer提供了一个可视化的界面来观测布局的层级, 让我们可以优化布局层级, 删除多余的不必要的View层级, 提升布局速度。

Hierarchy Viewer.png

有必要说明下的是:
上图红框标出的三个点是关键分析数据. 左起依次代表View的Measure, Layout和Draw的性能. 另外颜色表示该View的该项时间指数, 分为:

  • 绿色, 表示该View的此项性能比该View Tree中超过50%的View都要快.
  • 黄色, 表示该View的此项性能比该View Tree中超过50%的View都要慢.
  • 红色, 表示该View的此项性能是View Tree中最慢的.

1.3.2 文档

1.3.3 作用

用来做View层级分析, 可以分析出View Tree中的性能阻塞点, 以便对症下药, 提升布局性能.

1.4 TraceView

1.4.1 说明

一个图形化的工具, 用来展示和分析方法的执行时间.


TraceView.png

1.4.2 文档

1.4.3 作用

分析方法调用栈以及其执行时间, 优化方法执行.

1.5 Memory Monitor

1.5.1 说明

内存使用检测器, 可以实时检测当前Application的内存使用和释放等信息, 并以图形化界面展示.


Memory Monitor.png

1.5.2 文档

1.5.3 作用

  • 用来做内存分析, 内存泄露排查的不二之选. 可以结合heap viewer, allocation tracker来分析.
  • 可以导出hprof文件结合第三方的MAT工具分析泄露点.

1.6 Other Monitor

1.6.1 说明

Android Studio的Monitor还提供了其他三个Monitor --- CPU, GPU, Network.

1.6.2 文档

1.6.3 作用

分别用来跟踪监测CPU,GPU和Network的使用极其变化, 可以作为网络优化, 流量优化和渲染优化等的一个指导. (个人并不常用到~)

1.7 其他

Android的开发者模式中也提供了较多的用来监测性能的选项, 可以用下:


Developer options.png

二、第三方工具

以下工具全部开源, 开源万岁...

2.1 Google的Battery Historian

2.1.1 说明

Google出品, 通过Android系统的bugreport文件来做电量使用分析的工具.

2.1.2 文档

2.1.3 作用

用来做电量使用分析.

2.2 网易的

2.2.1 说明

针对Android App的CPU, 内存, 网络, 电量等多项综合的测试分析.

2.2.2 文档

2.2.3 作用

比官方工具更适合国人使用来做App的整体性能分析.

2.3 Square

2.3.1 说明

  • Square出品, 必属精品.
  • 类似与App探针的内存泄露监测工具.

2.3.2 文档

2.3.3 作用

集成到App中, 用来做内存问题预防最好不过了.

2.4 AndroidDevMetrics

2.4.1 说明

一个library, 用来检测Activity生命周期执行性能, Dagger2注入性能以及帧率性能的工具.

2.4.2 文档

2.4.2 作用

如果你的应用使用的Dagger2, 这个就比较必要了.

2.5 Lint

2.5.1 说明

Lint 是Android Studio 提供的代码扫描分析工具,它可以帮助我们发现代码结构/质量问题,同时提供一些解决方案,而且这个过程不需要我们手写测试用例。

2.5.2 文档

2.5.3 作用

  • 优化代码,去除冗余资源
  • 发现潜在bug或可优化地方

三、结语

MAT没有侧重的提, 是因为这个工具在ADT时代比较常用, AS2.0之后, 本身的Memory Monitor越来越强大, 结合日益完善的第三方工具基本上可以完成内存方面的优化了.

欢迎大家分享自己常用的App性能分析工具, 共同学习~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,569评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,499评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,271评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,087评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,474评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,670评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,911评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,636评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,397评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,607评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,093评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,418评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,074评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,092评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,865评论 0 196
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,726评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,627评论 2 270

推荐阅读更多精彩内容