私たちは 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
この関数は、ほとんどのユーザー関数を呼び出すように見えます (つまり、メインから呼び出される関数です)。これについて私が見つけた最も近い説明はhereでしたが、そのリンクは静的オブジェクトと 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