时间采样问题与gprof
我试图分析一些c ++代码,用g ++编译,包括使用gprof的选项-pg。 但是,尽管程序需要10-15分钟才能在我的计算机上运行(CPU超时),但gprof生成的表的%time,cumulative seconds和self seconds列完全是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无法看到它的地方使用库。 检查这个答案。
链接地址: http://www.djcxy.com/p/43859.html