実験にccacheを使用していますが、これを使用する必要があるかどうかはよくわかりません。ccacheが間違った動作を引き起こす可能性がある状況を誰かが説明できますか?または、常にccacheを使用する必要がありますか?そのccacheを取得した人は、間違ったオブジェクトファイルを生成している、またはヘッダーファイルの変更は考慮されていませんか?
3 に答える
を使用している間、私は実質的に何の問題もありませんccache
。時々(たとえば、月に1回以下)、キャッシュを完全にクリーンアップしccache -C
ます。
複雑なMakefile- sの方が。よりも多くの問題がありccache
ます。
簡単に言うと、気にしないでください。何かが疑われる場合は、を実行して ccache -C
ください。
ccache
コンパイル時間をベンチマークするときは、明らかに避ける必要があります。(パスするか、パス-time
する-ftime-report
かgcc
、g++
その場合)。
補遺
私の意見でccache
は、GCCプラグインはキャッシュできないもの(データベースやWebサービスのクエリなど)を実行できるため、少なくともGCCプラグインを使用したコンパイルのキャッシュを無効にするように構成可能である必要があります。このメッセージを参照してください。
あなたは間違った行動をすることによってあなたの質問をうまく表現しました。
ccacheの動作が間違っていると、誤って使用するとコンパイルが遅くなる可能性があります。ccacheは過去のコンパイルを認識するためにファイルをスキャンする必要があるため、ccacheを介した実際のコンパイルはそれがない場合よりも遅くなります。キャッシュヒットのみが高速です。
ccacheは、同じコードを変更せずに頻繁に再コンパイルする場合に役立ちます。新規または変更されたコードのコンパイルを高速化することはありません。
私はかつて、ccache(シンボリックリンク方式)を介したSConsのコンパイルで問題が発生しました。
環境設定
ccacheでは$HOME変数を環境に設定する必要がありますが、SConsではデフォルトで設定されていません(SConsには、ビルドを環境から可能な限り分離するポリシーがあります)。
これがccacheの問題としてカウントされるのか、単にSConsとの相互運用としてカウントされるのかは完全にはわかりません。この癖以外に、ccacheで問題が発生したことはありません。
SSDの摩耗
SSDを不必要に摩耗させないように、〜/.ccacheをtmpfsにリンクする習慣を採用しました。明らかに、これはccacheの問題ではありません。これがないと、事態はさらに悪化するからです。(覚えておくべきこと)