We use g++ 4.2.4 and I'm trying to track down some performance problems in my code.
I'm running gprof to generate the profile, and I'm getting the following "strangeness" in that the most expensive function is __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
This function then appears to calls most of my user functions (ie. it is the one that's called from main). The nearest explanation that I found for this was here, but that link refers to static objects and atexit, and I don't think this applies in my case.
If it's helpful, I'm using Boost (program_options and fusion) and the HDF5 libraries.
UPDATE:
The command I use when building is:
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