当前位置:  开发笔记 > 编程语言 > 正文

令人困惑的gprof输出

如何解决《令人困惑的gprof输出》经验,为你挑选了2个好方法。

根据我的说法,我运行gprof了一个C++程序,我得到了第一行输出:16.637stime()

%   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秒.为什么会这么错呢?



1> Jesse Beder..:

瓶颈原来是在文件I/O中(参见Is 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).事实上,seekgtellg没有连谱名单上,他们是瓶颈!



2> Drew Dormann..:

自我秒是在[无论如何]花费的时间.

累积秒数是[无论]花费的时间和它上面的调用(例如[whatever] + main)

这些都不包括在[what]调用的函数中花费的时间. 这就是为什么你没有看到更多的时间列出.

例如,如果你的[what]函数调用了很多printf,那么你的gprof输出告诉你printf大部分都在吃.

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有