11

我最近注意到,一旦我开始构建我正在使用的 Visual Studio 解决方案(约 200 个 C++ 项目),我就会得到大量的 cl.exe 进程。 任务管理器截图

我对多个 cl.exe 并行运行这一事实并不感到惊讶,因为我的项目是通过/MP选项设置的。 其中一个项目中的项目设置

但我希望它们的数量会受到 Visual Studio“选项”中以下设置的限制。 Visual Studio 设置(工具 -> 选项)

我认为在 4 核 PC 上并行运行数十个进程并不是构建解决方案的最有效方式。

所以,基本上我有两个问题:

  • 为什么我会观察到这样的行为?
  • 是否可以限制cl.exe实例的数量?

PS我通常使用 Visual Studio 2013 Update 4 编译我的解决方案,但使用 Visual Studio 2017 可以观察到相同的行为。

4

4 回答 4

6

要限制 cl.exe 的数量,您应该使用此选项(至少它存在于 MSVC 2015 中):

工具->选项->项目和解决方案->VC++项目设置\最大并发C++编译

默认情况下,零表示“CPU 数量”。

于 2018-10-29T11:25:22.177 回答
4

我认为您需要阅读本文,结论是您需要设置编译以适应 VS 的世界观。

还将并行项目的数量限制为 2-3,具体取决于您运行它的实际 PC。如果您的 PC 是具有 16 个以上内核的怪物,您可能会上升 1-2 个。

理想情况下,VS 应该提供使用 X 线程的选项,但唉。

于 2017-08-02T11:31:52.710 回答
1

确保您的任何项目都没有 /MP 开关。

那么设置最大并行项目构建将直接关系到编译可执行实例的数量。

应该会慢一些。另一种方法是强制 Visual Studio/MSBuild 使用特定的亲和力。这不会限制线程,但会为操作系统/其他程序保留一些备用内核。

于 2018-03-30T16:22:43.577 回答
-3

在工具菜单下,选择选项。然后在项目和解决方案下,构建和运行页面有一个字段“并行项目构建的最大数量”。

于 2017-07-28T17:52:11.097 回答