网站大量收购闲置独家精品文档,联系QQ:2885784924

Android 性能个案研究.pdf

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Android 性能个案研究 对于Android 的开发,相信很多开发者在Android性能优化上花费了很大功夫,的确,这 是项目开发的一个关键所在,下面,就将所有的Android性能优化个案奉献给大家。 Falcon Pro 我最近在我的Nexus 4上安装了Falcon Pro,一个新的Twitter客户端。我真的很喜 欢使用这个应用程序,但我在使用它时注意到了某些地方存在一些问题,看起来滚动主时间 轴并没有得到非常稳定的帧率。我深钻了一下我每天工作所用工具和技术中的一些,我能很 快地找到一些Falcon Pro 并不如它本可以表现得那么好的原因。 我在这篇文章里的目的是告诉你如何追踪和修复应用程序中的性能问题,即使你没有它 的源代码。所有你需要的只是一份最新的Android 4.2 SDK –新的ADT bundle使设置变得 简易。我极力推荐你下载这个应用程序来亲自应用这里描述的技术。对你来说不幸的是 Falcon Pro是款付费应用,因此我将给您提供你可以下载的各种文件的链接来跟随我的分 析。 关于性能 Android 4.1把重点放在Butter项目的性能上,它带来了新的性能分析工具,如 systrace。Android 4.2不提供象systrace那么显著的工具,只是提供了对你的工具箱的 一些有益补充。在本文的后面你会发现这些新工具中的一个。 性能分析往往是一个复杂的任务,需要大量的经验和对某些工具、硬件、API 的深入的 知识等等。经验使我能只用几分钟就进行在这里展示的分析——你可以在我十二月一日的 Twitter stream上看到它 “实时”发生。你可能要多试几次才会感觉这种工作很容易。 证实我的怀疑 关于性能操作,牢记最重要的一件事就是始终用测试去验证你的行为。即使FalconPro 在Nexus4上运行帧率下降看起来很明显,我还是需要确认一下。因此,我将应用安装到一 部提供不同于Nexus性能概况并且比Nexus4更强大的Nexus7上。Nexus 7提供了一个有趣 的更有优势的性能分析工具,我们以后再谈。 在Nexus 7安装应用程序并没有什么区别,我仍能看到帧率下降。应用甚至显得稍差。 为了描述这个问题,我决定用4.1 以后引入的“GPU呈现模式分析”工具。你可以在应用设 置下的 “开发者选项”中找到它。 如果 “开发者选项”在你的android4.2设备上不能使用,找到 “关于手机”或者 “关 于平板”勾选底部的7的倍数构建选项。 当选项打开后, 系统会保持跟踪每个窗口绘制最后128帧所耗费的时间。使用这个工具 你必须首先结束掉应用–android将来的版本将摆脱这个限制。 方法说明:除非另有规定,本分析每个测量是通过每次缓慢滚动主时间轴上下几点, 显示最多有一个额外的列表项。 在运行应用,主时间轴开始滚动时候,我在终端执行了如下命令: $ adb shell dumpsys gfxinfo 在产生的日志中,你会发现一个标题为: Profile data in ms. 这一节包含为每个窗 口所属应用产生的3列表格。为了使用这些数据, 简单的复制表格到你喜欢的电子表格软 件中就会生成一个堆叠柱状图表。下面的图是我的测量结果 (原始表格数据 可以在线查 看.) 每列给出渲染每帧大概需要多长时间: 1.Draw 是消耗在构建 java显示列表的时间。 它显示出运行方法用的时间诸如 View.onDraw(Canvas). 2.Process是消耗在Android 的2D渲染器执行显示列表的时间。你的视图层次越多, 要执行的绘图命令就越多。 3.Execute是消耗在排列每个发送过来的帧的顺序的时间.这部分的图通常是很小的。 注意:使顺利在60帧,每帧必须小于16毫秒完成。 关于Execute:如果执行耗费了过长的时间,这意味着你是跑在前面的图形管线。 android在运行时可以有3个缓冲区.如果你需要另一个应用程序将阻塞直到其中的一个缓 冲区释放出来。两个原因会发生这种情况。第一,你的应用在Dalvik 中快速绘制但在GPU 显示列表时候消耗了大量时间。第二,你的应用程序花了很长的时间来执行第几帧;一旦管 线满了他将无法赶上,除非动画完成。我们希望Android在未来版本中改进。 该图显然证实了我的怀疑:通常应用运行良好,不过有时候会运行帧率下降。

文档评论(0)

a13355589 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档