1

gcc のコンパイル時間を短縮するには、次の 2 つのオプションがあります。

  • ccache
  • gcc のプリコンパイル済みヘッダー

しかし、どのような状況下でどちらが優れているかはわかりません。

私はこの質問をグーグルで検索しましたが、ccacheが他のものよりも完全に優れているという漠然とした印象を受けました。そうですか?

4

1 に答える 1

4

プリコンパイル済みヘッダーと ccache は、まったく異なるユース ケース用です。ccache はプリコンパイル済みヘッダーと一緒に使用できますが、相互に排他的ではありません。

ccache は、指定されたソース ファイル全体、ヘッダー、およびすべてをキャッシュし、コンパイルされたオブジェクト モジュールをキャッシュします。技術的には、ccache は前処理されたソース翻訳単位全体を取得し、それをハッシュして、結果のオブジェクト モジュールをキャッシュします。

#includeプリコンパイル済みヘッダーを使用すると、異なるソース翻訳単位から同じヘッダー ファイルを繰り返し使用する場合に、時間を少し節約できます。しかし、同じソース コードが繰り返しコンパイルされる場合、プリコンパイル済みヘッダーは役に立ちません (プリコンパイル済みヘッダーを使用する唯一の利点以外に)。そこで登場するのが ccache です。ccache は、コンパイル フェーズ全体を静かにスキップし、以前にコンパイルされたオブジェクト モジュールをキャッシュからフェッチするだけです。

そのため、ccache とプリコンパイル済みヘッダーのどちらが優れているかを比較することはあまり意味がありません。それらは 2 つの異なる問題を解決します。

于 2016-10-26T01:45:02.333 に答える