【问题标题】:Release build time takes so long in VS2008VS2008 的发布构建时间太长了
【发布时间】:2010-11-09 15:44:48
【问题描述】:

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

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

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

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

你知道为什么会这样吗?

【问题讨论】:

  • 可能是因为增量链接或函数级链接设置?
  • 听起来 release 比你的解释要短很多?
  • 您的主题和问题不一致。在您的问题中,您声明调试版本需要很长时间(130 秒),而发布版本很短(15 秒)。是哪一个?
  • 好的,我更正了这个问题。现在发布需要更长的时间...

标签: c++ visual-studio build linker release


【解决方案1】:

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

您能否向我们提供有关您的解决方案的更多信息?比如

  • 什么语言?
  • 什么类型的项目?
  • 项目中有多少文件?
  • 是否从命令行复制?

【讨论】:

  • - 这是一个 c++ 项目 - 在这个项目中,我一起使用 openSceneGraph 和 qt。 - 有超过 200 个文件 - qt 文件在编译时重现。在链接中没有复制。
【解决方案2】:

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

问候,

塞巴斯蒂安

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • +1,除了注释“链接通常受 CPU 限制”。通常,链接受磁盘 I/O 限制。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多