需要帮助来理解kcachedgrind输出

时间:2010-05-09 20:04:12

标签: valgrind kcachegrind

我正在使用valgrind callgrind来分析gtk上的程序。然后我使用kcachedgrind来读取结果。我在这里获取了kcachedgrind的更新截图:http://i41.tinypic.com/168spk0.jpg。它说函数gtk_moz_embed_new()花费了'15 .61%'。 但我不明白这是怎么可能的。函数gtk_moz_embed_new()字面上有1行:它只是调用g_object_new()。

GtkWidget *
gtk_moz_embed_new(void)
{
  return GTK_WIDGET(g_object_new(GTK_TYPE_MOZ_EMBED, NULL));
}

请帮助理解结果或如何使用kcachedgrind。

谢谢。

1 个答案:

答案 0 :(得分:8)

如果我没记错的话,那应该意味着(或多或少)函数gtk_moz_embed_new()执行应用程序运行时间的15.61%。

您会看到,该函数返回对其他函数(或类或其他)的内联调用,这些函数也需要一些时间来执行。当它们全部完成时,函数gtk_moz_embed_new()实际上返回一个值。同样的原因,main() 99%的时间执行,它执行完所有包含的代码后执行完成。

请注意self的{​​{1}}值为0,这是“独占成本”,这意味着它自己的函数并没有真正花费任何时间来执行(它实际上只是一个回调)

But to be exact:

  

1.1'Incl。'有什么区别?和'自我'?

     

这些是费用属性   关于某些事件类型的函数。   因为函数可以相互调用它   有意义区分成本   功能本身('自我成本')和   包括所有被叫的费用   功能('包容性成本')。 '自'   有时也被称为   '独家'成本。

     

所以,例如对于main(),你将永远   包含成本几乎100%,   而自我成本是可以忽略的   当真正的工作在另一个人完成时   功能