【问题标题】:Visual Studio 2017 Command Line build slower than IDEVisual Studio 2017 命令行构建速度比 IDE 慢
【发布时间】:2023-03-08 22:56:01
【问题描述】:

当我从命令行 (cmd) 运行 Visual Studio 2017 时,构建速度几乎比在 IDE 中构建慢 3 倍。

命令行:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\devenv.com My_Project.sln /Project My_Solution /Rebuild Release  

我正在设置一个持续集成系统 (GitLab),我希望编译器在开发人员推送提交之前运行。缓慢的命令行构建将阻止开发人员使用 CI 系统。

我正在寻找加快命令行构建过程的技术,最好是更快或等于从 IDE 构建时的速度。

环境:

  • 处理器:Intel(R) Xeon(R) W-2102 CPU @ 2.90Ghz 2.90 Ghz
  • 安装内存 (RAM):32.0 GB(31.7 GB 可用)
  • 系统类型:64 位操作系统 (Windows 7)
  • Visual Studio Professional 2017,版本 15.9.16
  • NUMBER_OF_PROCESSORS=4
  • 硬盘驱动器,581 GB 可用空间。
  • 项目正在使用 C++ 和 MFC 作为 GUI。

【问题讨论】:

  • 您是否将/m 添加到msbuild 的命令行? iirc,在命令行上,未将默认值指定为单处理器。 /m:4 为 4,/m 全部可用。
  • 我收到错误“无效的命令行”。 devenv 不喜欢 /m 命令行开关。
  • 你能切换到使用 MSBuild 吗?甚至Microsoft 也建议这样做。试图搜索看看如何通过msbuild切换通过devenv
  • 我们讨论了多少时间?秒、分、小时?该命令行可能会加载不快的整个 devenv UI。

标签: c++ command-line build visual-studio-2017


【解决方案1】:

/Rebuild此开关执行与集成开发环境 (IDE) 中的“重建解决方案”菜单命令相同的功能 - 将清理然后从头开始构建解决方案,忽略之前所做的任何事情。

当您在 IDE 中使用构建选项而不是 Rebuild 构建项目时,它将执行增量构建:如果它认为不需要重新构建项目,则不会。如果它们没有改变,它也可能使用项目的部分构建部分。这就是很多项目在命令行中构建但不是在 IDE 中构建的原因。

为了加快构建速度,您可以在命令行中将属性更改为 /t:build 或在 IDE 中构建时选择重新构建选项。

此外,影响构建速度的因素还有很多,例如并行度。当我们在IDE中构建多个项目时,parallel的默认值为8,Tools->options->Projects and Solutions->Build and Run:

因此,当您比较命令行和 IDE 的构建速度时,您必须确保命令行和 IDE 的所有相关设置都相同。

【讨论】:

  • 很好的例子,但 CI/CD 要求是在开发人员签入文件之前执行完整的重建。这将验证整个解决方案中没有编译错误。
猜你喜欢
  • 2018-04-25
  • 1970-01-01
  • 2012-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多