Мы используем 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). Ближайшее объяснение, которое я нашел для этого, было здесь , но эта ссылка относится к статическим объектам и атаке, и я не думаю, что это применимо в моем случае.
Если это полезно, я использую 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