1

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

发布时,链接时间为:130secs

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

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

你知道为什么会这样吗?

4

3 回答 3

3

由于优化设置,发布构建可能较慢。通常对于调试版本,您没有优化设置 - 这意味着生成的目标文件可能或多或少地直接复制到输出中。另一方面,对于发布版本,您可能已打开LTCG或其他链接器优化可能适用。链接通常受 CPU 限制,并且通常只在单个线程中运行,因此它往往有点慢。输出越大,这似乎也变得越糟。

于 2009-07-10T08:58:38.777 回答
0

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

问候,

塞巴斯蒂安

于 2009-07-10T08:59:21.257 回答
0

我唯一能想到的就是您将 FxCop 设置为仅在发布模式下运行。这将导致大型项目的显着构建时间差异,因为如果启用 FxCop,它将作为构建过程的一部分运行。

你能给我们更多关于你的解决方案的信息吗?例如

  • 什么语言?
  • 什么类型的项目?
  • 项目中的文件数?
  • 它是否从命令行复制?
于 2009-07-10T17:00:22.813 回答