1

ソリューションで PCH を使用してコンパイル時間を短縮しようとしていますが、信じられないことに、 を使用しない場合比較して2 倍以上の時間がかかります。統計は次のとおりです。

i7 で動作する 8 GB の Windows 7 x64

サンプル プロジェクト: 合計 4.5 MB のソース コードに対して 235 個の cpp ファイル (MFC を使用)

PCH では 13:55 分かかります

PCH なしでは 6:15 分かかります

私はそれらを正しく使用していると確信しており、プロジェクトはプロジェクトレベルでプリコンパイル済みヘッダーを使用するように設定されており、StdAfx.cpp は StdAfx.h を介してプリコンパイル済みヘッダーを作成するように設定されています。

すべての標準 #include は StdAfx.h に配置され、すべての cpp ファイルは

#include "StdAfx.h"

意味がわかりません。何が起こっているのか、またはどうやってそれを解決しようとするのか、誰かアイデアを持っていますか?

4

1 に答える 1

0

だから私は最終的にこれを回避しました。私のソリューションの構造は次のとおりです。

C:\Data\Bus\VS\Projects\Solution.sln
C:\Data\Bus\VS\Projects\Proj1\
C:\Data\Bus\VS\Projects\Proj2\
C:\Data\Bus\VS\Projects \Proj3\
など

これらは常に使用されるため、ドライブ文字を割り当てました。

P = C:\Data\Bus\VS\Projects\

以下を使用してソリューションに簡単にアクセスできるように、この領域に移動します。

P:\Solution.sln
P:\Proj1\
P:\Proj2\
P:\Proj3\

VS2008 は、マップされたドライブ文字 (P) を介してソリューションを開くことを好まないことがわかりました。これは、PCH でのビルドが遅くなる場所です。

しかし、C ドライブへの直接のフル パスで開くと、予想どおり、PCH によって優れた速度の利点が得られます。

誰でもこれについて何か考えがありますか?ドライブのエイリアシングがVSにPCHが常に古くなっているという間違った印象を与えているとしか思えないので、すべてのファイルで再構築します。とても神秘的です。

于 2012-05-31T08:08:09.083 に答える