我正在尝试使用 gprof 分析一些用 g++ 编译的 C++ 代码,包括选项 -pg。然而,尽管该程序在我的计算机上运行需要 10-15 分钟(CPU 已满),但 gprof 生成的表中的 % time、cumulative Seconds 和 self Second 列完全是 0.00s!调用列包含看起来正确的数据,例如对基本函数的超过 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 秒?
gprof不计算任何阻塞时间,例如 I/O 或其他内容。此外,在任何在子函数中完成所有工作的例程中,“自身时间”通常都非常小,例如,如果您主要使用 DLL 中的库,而 gprof 无法看到它。检查这个答案。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)