は、GCCのコンパイル時間をスピードアップするために、我々は2つのオプションがあります。ccacheはgccのプリコンパイル済みヘッダーの手段を完全に優れていますか?</p> <ul> <li>ccacheの</li> <li>のgccのプリコンパイル済みヘッダー </ul> <p>しかし、私はどのような状況下で優れているか分からない</li>:
私はこの質問を尋ね、ccacheが完全に他の人に優秀であるという曖昧な印象を得ました。そうですか?
は、GCCのコンパイル時間をスピードアップするために、我々は2つのオプションがあります。ccacheはgccのプリコンパイル済みヘッダーの手段を完全に優れていますか?</p> <ul> <li>ccacheの</li> <li>のgccのプリコンパイル済みヘッダー </ul> <p>しかし、私はどのような状況下で優れているか分からない</li>:
私はこの質問を尋ね、ccacheが完全に他の人に優秀であるという曖昧な印象を得ました。そうですか?
プリコンパイルされたヘッダーとccacheは、全く異なるユースケース用です。 ccacheはプリコンパイルされたヘッダーとともに使用できますが、相互に排他的ではありません。
ccacheは、コンパイル済みオブジェクトモジュールをキャッシュする特定のソースファイル、ヘッダーおよびすべてのキャッシュをキャッシュします。技術的には、ccacheは前処理されたソース変換ユニット全体を取り出し、ハッシュし、結果のオブジェクトモジュールをキャッシュします。
プリコンパイルされたヘッダーは、同じヘッダーファイルが異なるソーストランスレーション単位から繰り返して#include
dである場合、時間の節約になります。しかし、同じソースコードが繰り返しコンパイルされると、プリコンパイルされたヘッダーは助けになりません(プリコンパイルされたヘッダーを使用する唯一のメリットはありません)。 ccacheが静かにコンパイル・フェーズ全体をスキップし、以前コンパイルされたオブジェクト・モジュールをキャッシュからフェッチするだけで、ccacheが入ります。
したがって、どのアプローチがより良い、ccacheまたはプリコンパイルされたヘッダーであるかを比較することは意味がありません。彼らは2つの異なる問題を解決します。