我试图在我的解决方案中使用PCH来缩短编译时间,但令人难以置信的是, 与没有相比,需要的时间是的两倍多。这是统计数据:
在i7上运行8GB的Windows 7 x64
示例项目:235个cpp文件,总共4.5 MB源代码(使用MFC)
PCH需要13:55分钟
没有PCH需要6:15分钟
我非常确定我正确使用它们,项目设置为在项目级别使用预编译标题,并且StdAfx.cpp设置为通过StdAfx.h创建预编译标题
所有标准#includes都放在StdAfx.h中,所有cpp文件都以
开头#include" StdAfx.h"
我无法理解它。任何人都有想法可能会发生什么,或者我怎么会开始尝试解决它?
答案 0 :(得分:0)
所以我最终解决了这个问题。我的解决方案结构如下:
C:\数据\总线\ VS \项目\ Solution.sln
C:\ DATA \公交车\ VS \项目\ Proj1 \
C:\ DATA \公交车\ VS \项目\ Proj2 \
C:\ DATA \公交车\ VS \项目\ Proj3 \
等
因为这些一直在使用,所以我已经映射了一个驱动器号:
P = C:\ Data \ Bus \ VS \ Projects \
到此区域,以便使用以下内容更轻松地访问解决方案:
,P:\ Solution.sln
病人:\ Proj1 \
病人:\ Proj2 \
警:\ Proj3 \
我发现VS2008不喜欢通过映射的驱动器号(P)打开解决方案,这是PCH发生速度较慢的地方。
但是,如果我使用完整路径直接打开C驱动器,PCH可以提供出色的速度优势。
有人对此有任何想法吗?我只能认为驱动器别名给了VS错误的印象,即PCH总是过时,所以它会用每个文件重建它。非常神秘。