【问题标题】:Compile Speed Visual Studio编译速度 Visual Studio
【发布时间】:2013-01-14 10:20:16
【问题描述】:

我想知道 Visual Studio 如何处理编译一个拆分为子项目的解决方案,与只有一个项目的解决方案相比(具有相同数量的类,例如 200 个类)。哪个编译速度更快(或者它们都一样)?

【问题讨论】:

  • 不是您的答案,而是 SSD 磁盘解决的问题。之后就变得无关紧要了。
  • 编译通常是一个 O(n) 问题,所以没关系。无法猜测多次启动构建工具可能会产生什么样的开销,您的问题被严重记录不足。
  • 只是想详细说明史蒂夫的回答。 Visual Studio 对硬盘的使用非常繁重。拥有 SSD 可带来令人难以置信的性能提升。
  • 我已经为我的所有开发人员配备了 SSD。
  • 我也遇到了编译缓慢的问题(单个项目大约需要 20 秒)。我通过 1) 禁用大多数 C/C++ -> 优化设置 2) 将大量 .c/.cpp 文件编译成 .lib 导出 (dll) 来解决它;静态链接库要慢得多。仅此一项就将编译时间压缩到仅约 4 秒。

标签: visual-studio compilation


【解决方案1】:

我认为通过将 uf 拆分为子项目的解决方案进行编译会更快。如果您没有更改其他项目之一,它可以使用未更改子项目的已编译 dll。 如果所有类都位于一个项目中,则每次构建时都必须编译整个项目...

但在我看来,比构建速度更重要的是将解决方案拆分为子项目的架构优势。如果您有多个组件可以用作独立程序或另一个解决方案中的库,那么拆分您的项目是完全有意义的。这将是我将解决方案拆分为子项目的方法!编译速度只是一个积极的副作用。

查看此链接以优化构建速度:http://blogs.microsoft.co.il/blogs/arik/archive/2011/05/17/speed-up-visual-studio-builds.aspx

将解决方案拆分为多个项目的另一个优势:编译器能够并行编译——即使这些项目之间存在一些依赖关系。所以总而言之,我会说它会更快。

【讨论】:

  • 你确定吗,这是我猜的,但不想猜。
  • 我只对编译速度感兴趣,我已经知道出于架构原因应该拆分解决方案,我只是检查这样做不会降低性能。
  • 增加了一项改进:项目的并行编译!
  • 我喜欢链接中的 RAM 磁盘的想法。
【解决方案2】:

一般来说很难回答 - 这取决于许多因素,包括 VS 版本。预编译的头文件可能会或可能不会被共享;整体程序优化实际上是整体链接单元优化;链接 DLL 发生在运行时,因此不计入 Visual Studio 构建时间等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-24
    • 2015-09-26
    • 1970-01-01
    • 2011-05-21
    • 2016-09-12
    • 2019-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多