48

有効にしたときに GCC が収集する情報-fprofile-generateと、収集した情報を実際に使用する最適化 (-fprofile-useフラグの設定時) はどれですか?

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

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

4

2 に答える 2

19

Ulrich Drepper による「すべてのプログラマーがメモリについて知っておくべきこと」 https://people.freebsd.org/~lstewart/articles/cpumemory.pdf http://www.akkadia.org/drepper/cpumemory.pdf

セクション 7.4 で

  • --profile-generate を指定してコンパイルすると、オブジェクト ファイルごとに .gcno ファイルが生成されます。(gcov カバレッジ レポートに使用されるのと同じファイル)
  • 次に、いくつかのテストを実行する必要があります。実行時に、カバレッジ データが .gcda ファイルに記録されます。
  • --profile-use を指定して再コンパイルします: カバレッジ データを収集し、分岐の可能性が高い (__builtin_expect( .. , 1)) か、そうでないか (__builtin_expect( .. , 0)) を推測します。

プロセッサの命令キャッシュへのコードのプリフェッチが改善されるため、結果はより高速に実行されるはずです。

于 2015-12-20T10:14:03.627 に答える