GCC Profiler,时间下落不明

时间:2015-03-19 15:46:20

标签: c gcc profiler gprof

我目前正在使用min-gw GCC探查器工具gprof来查找代码的慢速部分。我用

编译代码
gcc -p -pg -o3 example.c -o example.exe

运行文件后我使用

 gprof example.exe > data.txt

我的程序将其运行时间打印为~8秒,但data.txt仅显示我的程序的功能,其占用3.47秒。我想,在其他C函数中使用了无法计算的时间,例如mallocfree等,但我仍然需要知道时间的使用位置。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

有一个非常好的专有探查器 - 你拥有它。

任何可以暂停或中断的调试器,甚至是GDB,都会增加你能得到的最好的人工智能 - 你的头脑。

有些人称之为"poor man's profiler",但它有效,并且可以找到探查者可以找到的任何内容 (特别是 gprof)并且它可以很多。

如果你愿意,我会解释原因。

答案 1 :(得分:1)

gprof与大多数其他分析器一起提供样本,而不是提供准确的结果,因此您完全有可能获得比实际执行时间更短的时间。根据{{​​3}},进一步的gprof只关心程序中的代码,而不是任何其他被调用的库函数,所以这也是一个因素。

尝试使用valgrind和callgrind工具进行性能分析。它非常好且直观,您可以使用多种其他工具对其进行可视化。

您可以使用的另一件事是this,可以附加到流程并显示大部分时间花在哪里(以百分比表示)。

有很好的专有分析器,例如gperftool,但根据我的经验,我还没有找到使用gperftools所需的东西。