Мы используем 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). Ближайшее объяснение, которое я нашел для этого, было здесь, но эта ссылка относится к статическим объектам и atexit, и я не думаю, что это применимо в моем случае.
Если это полезно, я использую Boost (program_options и fusion) и библиотеки HDF5.
ОБНОВЛЕНИЕ:
Команда, которую я использую при сборке:
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