I ran gprof
在一个 C++ 程序上16.637s
, 根据time()
,我得到了第一行输出:
% cumulative self self total
time seconds seconds calls s/call s/call name
31.07 0.32 0.32 5498021 0.00 0.00 [whatever]
为什么会列出31.07%
如果只需要时间.32
秒?这是每次通话的时间吗? (这不是自己打电话吗?)
这是我第一次使用gprof
,所以请善待:)
编辑:通过向下滚动,gprof 似乎只认为我的程序需要 1.03 秒。为什么它会犯这么大的错误?
结果瓶颈出现在文件 I/O 中(请参阅std::ifstream 是否比 FILE 慢得多?)。我转而读取缓冲区中的整个文件,速度大大加快。
这里的问题是 gprof 在等待文件 I/O 时似乎没有生成准确的分析(请参阅http://www.regatta.cs.msu.su/doc/usr/share/man/info/ru_RU/a_doc_lib/cmds/aixcmds2/gprof.htm)。实际上,seekg
and tellg
甚至不在分析列表中,而且它们是瓶颈!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)