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

时间:2012-02-22 15:24:54

标签: android profiling android-traceview

我正在查看此页面:Profiling with Traceview and dmtracedump

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

  

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

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

请你帮我理解这段文字。

1 个答案:

答案 0 :(得分:10)

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

  

父母的背景为紫色,背景为黄色的儿童

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

个人资料面板

以下是文章中的个人资料面板的剪辑:

Clip of the Profile Panel

  

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

第一行(parent)的最后一列表示对此函数进行的调用和递归调用的次数: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的函数。

时间轴面板

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

Clip of the Timeline Panel

来自同一篇文章,

  

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

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

相关问题