hap*_*497 3 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));
}
Run Code Online (Sandbox Code Playgroud)
你能帮助理解结果或如何使用kcachedgrind.
谢谢.
如果我没记错的话,应该意味着(或多或少)该功能gtk_moz_embed_new()在应用程序运行的15.61%的时间内执行.
您会看到,该函数返回对其他函数(或类或其他)的内联调用,这些函数也需要时间来执行.当它们全部完成时,该函数gtk_moz_embed_new()将实际返回一个值.同样的原因,它需要main()99%的时间来执行,它在执行所有包含的代码后执行完成.
注意,0的self值gtk_moz_embed_new()是"独占成本",这意味着它自己的功能并没有真正花费任何时间来执行(它实际上只是一个返回调用)
1.1'包含'之间的区别是什么?和'自我'?
这些是关于某些事件类型的函数的成本属性.由于函数可以相互调用,因此区分函数本身的成本("自我成本")和包括所有调用函数("包含成本")的成本是有意义的."自我"有时也被称为"独家"成本.
因此,例如对于main(),您将始终具有几乎100%的包容性成本,而当实际工作在另一个函数中完成时,自我成本是可忽略的.
| 归档时间: |
|
| 查看次数: |
2002 次 |
| 最近记录: |