我们使用 g++ 4.2.4,我试图找出代码中的一些性能问题。
我正在运行 gprof 来生成配置文件,并且我得到以下“奇怪的信息”,因为最昂贵的函数是 __tcf_0:
Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls ms/call ms/call name
40.00 0.04 0.04 1 40.00 95.00 __tcf_0
然后,该函数似乎调用了我的大部分用户函数(即,它是从 main 调用的函数)。我为此找到的最接近的解释是here,但该链接引用静态对象和 atexit,我认为这不适用于我的情况。
如果有帮助,我正在使用 Boost(program_options 和 fusion)和 HDF5 库。
UPDATE:
我在构建时使用的命令是:
g++ -Wreturn-type -Wunused -Winline -pg -DLINUX -DHAS_SETENV \
-DFUSION_MAX_MAP_SIZE=15 -DFUSION_MAX_VECTOR_SIZE=15 -g -O0 \
--param large-function-growth=300 --param inline-unit-growth=200
__tcf_0 似乎确实是一个调用静态对象析构函数的函数,并且为每个静态对象注册,在退出时调用(理所当然地认为上面所说的这一页)
现在,你的 gprof 的结果很奇怪,因为花费大部分时间的函数只花费了 0.04 秒,这意味着整个程序需要 0.1 秒来执行。如果我没记错的话,我的猜测是你没有正确配置。您是否在启用分析的情况下编译代码?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)