15

Boost Program Optionsを使用していますが、非常に小さなC ++コードをコンパイルするのにかなりの時間がかかります(10秒以上)。Boostライブラリなしでコードをコンパイルするのに1秒かかりました。

Boostライブラリを使用してコンパイル/リンク時間を増やす方法はありますか?クロスプラットフォームなので、Mac OS X / Linux/PCでコードをコンパイルする必要があります。

4

2 に答える 2

17

通常のトリック以外にできることはあまりありません。

  • 依存関係を最小限に抑える:本当に必要なBoostヘッダーのみをプルし、可能な限り特定のヘッダーを使用します(多くのライブラリには、などの単一の「マスター」ヘッダーboost/thread.hppがありますが、などの特定のヘッダーを持つサブディレクトリもありますboost/thread/shared_mutex.hpp)、
  • 可能であれば、ヘッダー全体を含めるのではなく、前方宣言に依存します。
  • 可能であれば、ヘッダーは.cppファイルにのみ含めてください。ヘッダーに含める場合は、そのヘッダーを含む翻訳ユニットがコンパイルされるたびにコンパイルする必要があります。一般的な経験則として、ヘッダーに含まれるコードの量を最小限に抑えるようにしてください。
  • すべての主要なコンパイラは、プリコンパイル済みヘッダーをサポートしています。それらを使用してコンパイル時間を短縮し、
  • ユニティビルドを試してみてください。それはあなたの場合には利点かもしれないし、そうでないかもしれません。

最後になりましたが、最後のオプションは、これらの特定のBoostライブラリを使用しないことです。

都合の悪いときに、特定のBoostライブラリを早い段階で使用することがあります。コンパイル時間が悪くなった場合は、コンパイルにコストがかかるライブラリと、比較的単純なコードに置き換えることができるライブラリを調べ始めます。多くの場合、Boostは非常に一般的であるという要件によって妨げられます。8年前のコンパイラで動作するものが必要ない場合、または非常に多くの異なるタイプで動作する必要がない場合は、動作する簡単な置換を作成でき、ほとんど時間がかかりません。コンパイルする。

于 2011-02-17T15:34:52.640 に答える
1

コンパイル時間を短縮するために、コンパイラファイアウォールイディオムで成功しました。

于 2011-02-17T16:31:49.760 に答える