4

我正在尝试使用 gprof 分析一些使用 g++ 编译的 c++ 代码,包括选项 -pg。然而,尽管程序在我的计算机上运行需要 10-15 分钟(CPU 已用尽),但 gprof 生成的表的 % 时间、累积秒数和自身秒数列完全是 0.00 秒!调用列包含正确的数据,例如对基本函数的超过 150,000 次调用。以下是收集的数据示例:

  %   cumulative   self              self     total           

 time   seconds   seconds    calls  Ts/call  Ts/call  name

  0.00      0.00     0.00   156012     0.00     0.00  perm::operator[](int) const

  0.00      0.00     0.00   153476     0.00     0.00  perm::perm(void)

该程序不使用字符串,唯一的#include是iostream(仅用于输出最终答案),因此它不会因为字符串查找和比较或其他类似的慢速外部函数而变慢,如此问题中所建议的:无法使用 gprof 积累时间 - gnu 分析器

程序本身退出正常,我没有理由相信配置文件数据没有被正确写入(正如这里所建议的那样:gprof 报告没有累积时间

由于这一切都在 Windows 7 中完成,因此不能尝试使用 Shark 或 Valgrind。

是否有理由记录每个函数花费 0.00 秒?

4

1 回答 1

4

gprof不计算任何阻塞时间,例如 I/O 或其他东西。此外,在任何在子函数中完成所有工作的例程中,“自我时间”通常都非常小,例如,如果您主要使用 DLL 中的库,而 gprof 看不到它。检查这个答案。

于 2010-08-30T21:17:24.497 回答