2016-10-26 3 views
1

は、GCCのコンパイル時間をスピードアップするために、我々は2つのオプションがあります。ccacheはgccのプリコンパイル済みヘッダーの手段を完全に優れていますか?</p> <ul> <li>ccacheの</li> <li>のgccのプリコンパイル済みヘッダー </ul> <p>しかし、私はどのような状況下で優れているか分からない</li>:

私はこの質問を尋ね、ccacheが完全に他の人に優秀であるという曖昧な印象を得ました。そうですか?

答えて

4

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

ccacheは、コンパイル済みオブジェクトモジュールをキャッシュする特定のソースファイル、ヘッダーおよびすべてのキャッシュをキャッシュします。技術的には、ccacheは前処理されたソース変換ユニット全体を取り出し、ハッシュし、結果のオブジェクトモジュールをキャッシュします。

プリコンパイルされたヘッダーは、同じヘッダーファイルが異なるソーストランスレーション単位から繰り返して#includedである場合、時間の節約になります。しかし、同じソースコードが繰り返しコンパイルされると、プリコンパイルされたヘッダーは助けになりません(プリコンパイルされたヘッダーを使用する唯一のメリットはありません)。 ccacheが静かにコンパイル・フェーズ全体をスキップし、以前コンパイルされたオブジェクト・モジュールをキャッシュからフェッチするだけで、ccacheが入ります。

したがって、どのアプローチがより良い、ccacheまたはプリコンパイルされたヘッダーであるかを比較することは意味がありません。彼らは2つの異なる問題を解決します。

関連する問題

 関連する問題