0

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

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

假设 library_function 来自另一个未在启用分析的情况下编译的静态库。现在,如果 gprof 告诉我跑步 function需要 10 秒,包括它的所有孩子,这会包括花在的时间library_function吗?

4

1 回答 1

2

不,因为这种方式gprof有效,它对程序计数器进行采样,确定程序计数器在哪个函数中,并为该函数增加自身时间。

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

从那开始,它试图弄清楚其他一切。

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

这很聪明,但你可以做得更好

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

试试这个。
这是一个 44 倍加速的示例。
这是 730 倍的加速。
这里是对统计数据的解释。
这是批评的答案。
这是一个 8 分钟的视频演示。

于 2012-08-27T18:54:59.360 回答