2012-12-14 11 views
32

-fprofile-generateを有効にし、実際に収集された情報をどの最適化が使用するか(-fprofile-useフラグを設定するとき)、GCCはどの情報を収集しますか?GCCプロファイル誘導最適化(PGO)はどのような情報を収集し、どの最適化でそれを使用しますか?

ここに引用が必要です。私はしばらく検索しましたが、文書化されたものは見つかりませんでした。

リンク時最適化(LTO)に関する情報はプラスです! = D

答えて

29

-fprofile-generateは、-fprofile-arcs,-fprofile-valuesおよび-fvptを可能にする。 http://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Optimize-Options.html#Optimize-Options

PS:

-fprofile-use-fbranch-probabilities-fvpt-funroll-loops-fpeel-loops-ftracer

ソースを可能にします。そのページにもLTOに関する情報があります。 --profile-生成と

+0

これは参考になるかもしれません - http://gcc.gnu.org/wiki/PDO –

+0

私はちょうど同じリンクに到着しました。 – JohnTortugo

7

セクションではウルリック・ドレパー https://people.freebsd.org/~lstewart/articles/cpumemory.pdf http://www.akkadia.org/drepper/cpumemory.pdf

で "すべてのプログラマは、メモリについて知っておくべきこと" 7.4

  • コンパイルは、各オブジェクトファイルの.gcnoファイルを生成します。 (gcovカバレッジレポートに使用されているのと同じファイル)
  • 実行中にカバレッジデータを.gcdaファイルに記録します。
  • --profile-useで再コンパイルします。カバレッジデータを収集します分岐がそうであるならば、それはプロセッサの命令キャッシュにプリフェッチコードで良いはずのように推測(__builtin_expect(..、1)または低い(__builtin_expect(..、0)

結果はより速く実行する必要があります。

関連する問題