在gprof中计算的时间是否包括在未分析的函数中花费的内容?

时间:2012-08-27 16:21:11

标签: gprof

我现在有一个项目,我想要进行性能分析,但它使用了另一个我无法控制的库。说是否有这样的功能:

#include <library.h>
void function(...)
{
    // do something
    for (...)
    {
        // ...
        library_function(...);
        // ...
    }
    // do something
}

我们假设library_function来自另一个静态库,该库未使用启用的分析编译。现在,如果gprof告诉我运行function需要花费10个孩子,包括其所有孩子,这是否包括在library_function中花费的时间?

1 个答案:

答案 0 :(得分:2)

不,因为gprof的工作方式,它会对程序计数器进行采样,找出程序计数器所处的功能,并增加该功能的自我时间。

此外,它计算任何函数A调用任何函数B的次数。

由此,它试图找出其他所有内容。

当然,这只适用于它所知道的功能。

这很聪明,但是you can do better

补充:由于有人明智地决定删除上述帖子,这里简要总结一下如何做得更好:

Try this instead.
Here's an example of a 44x speedup.
Here's a 730x speedup.
Here's an explanation of the statistics.
Here's an answer to critiques.
Here's an 8-minute video demonstration.