- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
昨天,我花了 12 个小时成为 Traceview 的学生。在此之前我什至不知道它的存在(羞愧地低下了头)。
现在我已经克服了它产生的数据带来的绝对冲击,我发现 Traceview 可以归结为几个简单的概念:
无论如何,执行上面的这两个步骤后,我发现 3-4 种方法总是使用我 90% 的 CPU,并占据了我应用程序中的大部分实时延迟。唯一的问题是,这些方法都不是我写的方法,它们是系统方法,例如:
话虽这么说,但假设如果占用资源最多的是系统方法,那么它一定与我的布局设计有关,这样的假设是否正确?我不知道 BitmapFactory 怎么会这么高,我的布局并不是非常复杂,尽管在一个 Activity 中 BitmapFactory 本身占用了 95% 的资源。
TL;DR - 如果我运行 Traceview,并且如果我发现最重要的资源都是系统方法,这是否意味着这是一个布局问题?或者,我还能怎么说为什么系统方法如此之高,因为它与我的自定义方法没有直接关系。
非常感谢,瑞安
最佳答案
I find Traceview can be boiled down into a couple simple concepts:
恕我直言,这些概念并不是最好的。
Sort by "EXCL CPU TIME" to determine exactly how much usage each individual method is using in isolation
特别是,恕我直言,这个概念相当糟糕。是的,这是有用的数据。但是,您随后需要备份调用堆栈 以尝试找出触发此事件的原因。有时,它直接是您的代码。有时,您会认识到它是框架的一部分(例如,View
的 onDraw()
)。仅仅知道某个随机方法会占用大量时间对您没有好处,直到您首先确定是什么触发该方法被调用。
If I run a Traceview, and if I find the top hogs of resources are all system methods, does this mean it's a layout issue?
没有。
Or, how else can I tell why the system method is so high as it doesn't relate directly to my custom methods.
沿着调用堆栈向上查找,找出是谁如此频繁地或在不合时宜的时候调用这些方法。
例如,在 BitmapFactory
示例中,您可能会发现您(或您正在使用的库)正在调用 BitmapFactory
,并且可能正在这样做主应用程序线程。
要在调用堆栈中向上移动,请单击代表某个感兴趣方法的行左边缘的三角形。然后您将在其下方看到两个分支:“Parents”和“Children”。 “父级”代表方法调用堆栈的下一层,您可以继续沿着父级链向上工作,直到找到您认识的东西。
这就是为什么,恕我直言,您最好按包含时间排序,因为您的代码(它直接是罪魁祸首)将趋于向顶部冒泡。
关于Android Traceview - 它包含我的无响应应用程序的答案......我认为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17012222/
在提出这个问题之前,我已经看到了以下链接 how to use traceview in eclipse for android development? Android - Can't use tr
您能否向 nube 解释如何正确启动 traceview 实用程序。当我在命令行中写入时(在\tools 文件夹中蜂鸣)traceview 我收到此消息: 用法:java com.android.tr
我正在尝试使用 traceview 对 Android 应用程序运行一些分析。我用以下几行包装了要跟踪的代码: Debug.startMethodTracing("xxx"); // code Deb
昨天,我花了 12 个小时成为 Traceview 的学生。在此之前我什至不知道它的存在(羞愧地低下了头)。 现在我已经克服了它产生的数据带来的绝对冲击,我发现 Traceview 可以归结为几个简单
我只是不明白 traceview 的各种元素输出,我找不到教程。有人可以引用下图解释以下内容: 条形的宽度对应于函数所用的时间。高度对应什么? 包容性和独占性之间的具体区别是什么。我假设 inclus
Traceview 显示 updatePhysics() 每 10 毫秒左右调用一次,运行时间大约为 8 毫秒。然而,我在 updatePhysics 中调用的方法仅每运行 5 或 6 次 updat
我有一些代码使用 Jsoup 来获取和解析一些 html 页面,然后我操作 html 树,然后将它传递给绘制它的 WebView。如果我绕过我的操作,代码在 Android SDK 模拟器上的运行时间
我开始学习 Android Traceview 以提高 Android 应用程序的性能,有一个概念让我很困惑!在跟踪一个方法直到最深层次后,在子方法列表中,我看到一个(上下文切换)占用了大部分 CPU
当我尝试运行 traceview 时,我得到: 'java' 不是内部或外部命令,可运行的程序或批处理文件。SWT 文件夹“”不存在。请将 ANDROID_SWT 设置为指向包含您平台的 swt.ja
我正在学习使用这些工具进行性能分析。我已经阅读了关于 traceview 和 systrace 的 Android 文档,但我没有看到任何主要区别。它们都具有非常相同的 GUI:时间轴和左侧的所有组件
我正在查看此页面:Profiling with Traceview and dmtracedump 在“配置文件面板”下,它具有以下文本,引用文本下方的示例分析结果: The last column
我正在引用 this到我的应用程序的内存分析,当我用我的跟踪文件启动 TraceView 时,TraceView 窗口上显示了几种颜色和项目。 那么我怎样才能理解内存泄漏的位置,以及颜色的含义。 最佳
我正在使用 ADT 20.0.3。我正在使用以下命令打开我的跟踪文件: C:>traceview "C:/Users/androdev/mytracefile.trace" 但我收到以下错误: Fai
启用 Traceview 方法分析时,MediaCodec 似乎不返回输入或输出缓冲区。重现步骤: 在 Eclipse 中,运行 Grafika。 在 Grafika 中,选择“播放视频 (Textu
我尝试运行 Microsoft traceview来自 CMD,带有所有标志、详细级别并保存到文件。我尝试了很多组合,但每次我得到的文件都没有真实数据。 我找到了 Trace View Control
我正在使用eclipse 开发一个android 应用程序。该应用程序是字典,数据库位于 SQL azure(在线)中,我正在使用 RESTful 与其连接。我正在使用 traceview 使其性能更
今天我照常使用DDMS,但是出现了一个错误-它无法显示跟踪报告,跟踪 View 无法打开,异常信息如下,很奇怪,因为前几天还可以。我的android版本是4.0.3,eclipse 3.7,ADT 2
我想保存方法调用的日志。Traceview 支持该功能,我可以获得 .trace 文件格式。 但是,我需要在没有 DDMS 的情况下打开 .trace 文件格式。 如果在没有 DDMS 的情况下无法打
我单击配置文件线程开始,停止配置文件后我得到一个新标签: java.lang.RuntimeException: Method exit (android/os/Debug.isMethodTrac
我正在分析应用程序中的一个函数,该函数每 5 秒执行一次。但是,我在跟踪 View 的“Calls + Rec/Total”选项中只看到一半的调用。我正在使用 1 微秒作为采样间隔的基于采样的分析。我
我是一名优秀的程序员,十分优秀!