Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2008 在VS2008中使用预编译头需要更长的时间_Visual Studio 2008_Visual C++ - Fatal编程技术网

Visual studio 2008 在VS2008中使用预编译头需要更长的时间

Visual studio 2008 在VS2008中使用预编译头需要更长的时间,visual-studio-2008,visual-c++,Visual Studio 2008,Visual C++,我试图在我的解决方案中使用PCH来缩短编译时间,但令人难以置信的是,与未使用PCH相比,它需要的时间是使用PCH的两倍多。以下是统计数据: 在i7上运行8GB的Windows 7 x64 示例项目:235个cpp文件,共4.5MB源代码(使用MFC) 使用PCH需要13:55分钟 没有PCH需要6:15分钟 我很确定我正确地使用了它们,项目设置为在项目级别使用预编译头,StdAfx.cpp设置为通过StdAfx.h创建预编译头 所有标准#include都放在StdAfx.h中,所有cpp文件都以

我试图在我的解决方案中使用PCH来缩短编译时间,但令人难以置信的是,与未使用PCH相比,它需要的时间是使用PCH的两倍多。以下是统计数据:

在i7上运行8GB的Windows 7 x64

示例项目:235个cpp文件,共4.5MB源代码(使用MFC)

使用PCH需要13:55分钟

没有PCH需要6:15分钟

我很确定我正确地使用了它们,项目设置为在项目级别使用预编译头,StdAfx.cpp设置为通过StdAfx.h创建预编译头

所有标准#include都放在StdAfx.h中,所有cpp文件都以开头

#包括“StdAfx.h”


我搞不懂。有人知道会发生什么,或者我会如何开始尝试解决它吗?

所以我最终解决了这个问题。我的解决方案的结构如下:

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总是过时,因此它会用每个文件重建它。非常神秘。

您是否尝试使用GCC(即
g++
)并使用
g++
预编译
StdAfx.h
头文件?嗨,Basile,我不使用GCC,只使用标准VS2008工具。您的想法是什么,您的测试会有什么帮助?也许对于您的特定情况,GCC在预编译头上可能会做得更好(我不知道,只是建议尝试一下)。