1

多くのブースト ライブラリに依存するソフトウェアを作成していますが、コンパイルがどんどん遅くなるにつれて (数分)、プリコンパイル済みヘッダーに何度も使用されるすべてのライブラリをパックしました (たとえば、20 のようなブースト ライブラリと 20 のブースト ライブラリ)。 std libs)、それが問題を解決することを願っています。

今日、プリコンパイル済みヘッダーを使用してコンパイルすると、バニラの hello-world.cpp (いまいましいプリコンパイル済みヘッダーさえ含まれていない) をビルドするのに 15 秒かかることに気付きました。プリコンパイル済みヘッダーは 300MB 程度です。

したがって、質問は次のとおりです。

-このサイズのプリコンパイル済みヘッダーの場合、そのような速度低下が予想されますか? (私は密かに、私が何らかの巨大な間違いを犯したことを望んでいます。あなたの 1 人が、彼が 2GB のプリコンパイル済みヘッダーで日常的に動作し、物事がスムーズであることを教えてくれれば、非常に嬉しく思います)

-この種の速度低下が予想される場合、プリコンパイル済みヘッダーの有用性についてはまったく確信が持てません。何か不足していますか?

コンパイラ:

gcc version 4.4.5 (Debian 4.4.5-8)

コマンドライン:

g++ -include common-header.hpp -Winvalid-pch -c vanilla-hello-world.cpp
4

2 に答える 2

0

Vanilla_hello_world.cpp ファイルは、プリコンパイル済みヘッダーの #include で開始する必要があります (コメント以外の他の C++ ステートメントの前)。

質問には、使用されたコマンド ラインと、次によって生成されるコンソール メッセージを含める必要があります。

  1. PCH をコンパイルするコマンド
  2. PCHなしでvanilla_hello_world.cppをコンパイルするコマンド
  3. PCH を使用して、vanilla_hello_world.cpp をコンパイルするコマンド。

上記のそれぞれの時間を表示するには、「time gcc ...」を使用します。

PCH が機能している場合、時間 #3 は時間 #2 よりも短くなります。

時間 #1 + 時間 #2 が #3 よりも大きくなる可能性が非常に高くなります。PCH のポイントは #1 がほとんど必要ないことです (多くの場合 1 回だけ)。

于 2013-03-01T18:20:42.677 に答える
0

プリコンパイル済みヘッダーに繰り返し使用されるすべてのライブラリをパック

これはあなたの問題です。必要なものを含めてください。

各 TU は、この大量のプリコンプ済みヘッダーを参照する必要があります。

于 2013-03-01T17:56:10.717 に答える