繁体   English   中英

Android开发者页面:了解traceview profiling示例

[英]Android developer page: understanding traceview profiling example

我正在看这个页面: 使用Traceview和dmtracedump进行分析

在“配置文件面板”下,它具有以下文本,引用文本下方的示例性能分析结果:

表中的最后一列显示了对此方法的调用次数加上递归调用的次数。 最后一列显示了对该方法的调用总数中的调用次数。 在这个视图中,我们可以看到有14次调用LoadListener.nativeFinished(); 查看时间轴面板显示其中一个电话花了很长时间。

我对此描述感到困惑。 首先,本引文中的前两句似乎是指同一列。 那么最后一栏实际上包含了什么? 其次,我不明白“时间轴面板”的确切位置,我必须看到它“显示其中一个电话花了不寻常的时间”。

能帮我理解一下这篇文章吗?

首先,同一篇文章告诉我们:

父母被显示有紫色背景和孩子有黄色背景

所以LoadListener.nativeFinished是父函数 ,它下面的所有缩进行都是节点或父调用的函数。

档案面板

这是文章中的配置文件面板的剪辑:

配置文件面板的剪辑

表中的最后一列显示了对此方法的调用次数加上递归调用的次数。

第一行(父)的最后一列表示对此函数进行的调用和递归调用的次数:14次迭代和0次递归调用,用加号( 14 + 14 )分隔。

我认为文章的作者不小心说了几句话,结果下一行有点混乱:

最后一列显示了对该方法的调用总数中的调用次数。

在父级下面的黄色背景子行中,最后一列实际上不表示Calls + Rec。 请注意符号的变化 - 使用分数与加号符号语法。 在LoadListener.tearDown的情况下,14/14表示LoadListener.tearDown由父功能14倍调用。 在此跟踪中,LoadListener.tearDown函数总共调用了14次,因此LoadListener.nativeFinished是此跟踪中唯一调用LoadListener.tearDown的函数。

让我们看看另一行。 (子)函数View.invalidate的最后一列的值为2413/2853。 这并不意味着View.invalidate被迭代地调用2413次而递归调用2853次。 相反,它意味着父函数LoadListener.nativeFinished,调用View.invalidate 2413次。

现在看一下#6行,你会看到View.invalidate被迭代地调用2853次,递归调用0次。 因此,父函数LoadListener.nativeFinished是在此跟踪中调用LoadListener.tearDown的唯一函数。

时间线小组

以下是文章中时间轴面板的剪辑:

时间线面板的剪辑

来自同一篇文章,

第一行下面的细线显示所选方法的所有调用的范围(进入退出)

注意细长的支撑状粉红色线条直接水平跨越主线程突出显示部分的下方。 最左边的粉色花括号很短; 这些代表对LoadListener.nativeFinished的13/14调用,它们相对较快地完成。 最后一个支架 - 最右边的支架 - 比任何其他支架长得多。 这是对LoadListener.nativeFinished的调用“花了很长时间”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM