Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.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
C++ 在VS2008中,发布构建时间太长_C++_Visual Studio_Build_Linker_Release - Fatal编程技术网

C++ 在VS2008中,发布构建时间太长

C++ 在VS2008中,发布构建时间太长,c++,visual-studio,build,linker,release,C++,Visual Studio,Build,Linker,Release,当我构建项目时,如果发布的话,构建时间会得到很多时间 在发行版中,链接时间为:130秒 在调试中,同一项目的链接时间为:15秒 编译没有区别,但是链接有很大的区别 你知道为什么会这样吗?由于优化设置,发布版本可能较慢。通常,对于调试构建,您没有优化设置-这意味着生成的对象文件可能或多或少直接复制到输出中。另一方面,对于发布版本,您可能已经打开或应用了其他链接器优化。链接通常是受CPU限制的,通常只在单个线程中运行,所以它的速度有点慢。输出越大,情况似乎也越糟。我的经验是,在链接过程中,大部分时间

当我构建项目时,如果发布的话,构建时间会得到很多时间

在发行版中,链接时间为:130秒

在调试中,同一项目的链接时间为:15秒

编译没有区别,但是链接有很大的区别


你知道为什么会这样吗?

由于优化设置,发布版本可能较慢。通常,对于调试构建,您没有优化设置-这意味着生成的对象文件可能或多或少直接复制到输出中。另一方面,对于发布版本,您可能已经打开或应用了其他链接器优化。链接通常是受CPU限制的,通常只在单个线程中运行,所以它的速度有点慢。输出越大,情况似乎也越糟。

我的经验是,在链接过程中,大部分时间都花在生成调试信息上。如果您尝试在没有调试信息的情况下链接,链接时间应该会大大缩短(我正在处理的项目从大约80秒缩短到大约10秒)。如果不是,那是另外一回事。在调试构建中,不正确的增量链接也可能导致较长的链接时间;我看到链接时间从1分钟增加到了5分钟。如果您想在保留调试信息的同时减少链接时间,请确保编译单元尽可能少,因为必须合并所有编译单元的调试信息。我通过将多个cpp文件合并到一个编译单元中,让一个cpp文件包含这些cpp文件来实现这一点

问候,


Sebastiaan

我脑子里唯一能想到的是,您将FxCop设置为仅在发布模式下运行。这将在大型项目上造成显著的构建时间差异,因为如果启用,FxCop将作为构建过程的一部分运行

你能给我们一些关于你的解决方案的更多信息吗?比如说

  • 什么语言
  • 什么类型的项目
  • 项目中的文件数
  • 它是否从命令行重新编程

这可能是由于增量链接或功能级别链接设置造成的?听起来版本比您的解释要短得多?您的主题和问题不一致。在您的问题中,您声明调试构建需要很长时间(130秒),而发布构建需要很短时间(15秒)。是哪一个?好的,我更正问题。释放现在需要更长的时间…-它是一个C++项目——在这个项目中,我使用OpenScNeXGrand和QT一起。有200多个文件-qt文件在编译时重新生成。在链接中,除了注释“链接通常受CPU限制”外,没有复制+1。通常,链接是磁盘I/O绑定的。