SPEC ベンチマークで GCC Profile-Guided Optimization のオーバーヘッドをベンチマークしています。いくつかのベンチマークで奇妙な結果が得られました。実際、私のベンチマークのうち 2 つは、インストルメント化するとより高速に実行されます。
通常の実行可能ファイルは次のようにコンパイルされます: -g -O2 -march=native
インストルメント化された実行可能ファイルは、次のようにコンパイルされます: -g -O2 -march=native -fprofile-generate -fno-vpt
GCC 4.7 (正確には Google ブランチ) を使用しています。ベンチマークが実行されているコンピューターには、Intel(R) Xeon(R) CPU E5-2650 0 @ 2.00GHz が搭載されています。
bwaves は Fortran ベンチマークであり、libquantum
結果は次のとおりです。
bwaves-normal: 712.14
bwaves-instrumented: 697.22
=> ~2% faster
libquantum-normal: 463.88
libquantum-instrumented: 449.05
=> ~3.2% faster
ma機の問題かと思いベンチマークを数回実行しましたが、その都度確認しました。
一部のプログラムではオーバーヘッドが非常に小さいことは理解できますが、改善の理由はわかりません。
私の質問は次のとおりです。GCC インストルメント化された実行可能ファイルは、最適化された通常の実行可能ファイルよりも高速にするにはどうすればよいですか?
ありがとう