如果您有一个包含许多. cpp文件的C项目,并且不希望一次生成8个,则设置"并行项目生成的最大数量"不是解决办法。要控制该问题,请转到工具〉选项〉项目和解决方案〉VC ++项目设置,然后在生成部分中,将**Maximum Concurrent C Compilations设置为您希望并行编译的. cpp文件的最大数量。默认设置似乎是0**,这显然意味着没有最大数量。我有4个内核/8个线程,将此值设置为4,并且VS现在一次只编译4个文件,而不是8个。 这些说明基于Visual Studio 2017,但我认为有几个版本是这样的。
8条答案
按热度按时间fv2wmkja1#
如果您有一个包含许多. cpp文件的C项目,并且不希望一次生成8个,则设置"并行项目生成的最大数量"不是解决办法。要控制该问题,请转到工具〉选项〉项目和解决方案〉VC ++项目设置,然后在生成部分中,将**Maximum Concurrent C Compilations设置为您希望并行编译的. cpp文件的最大数量。默认设置似乎是0**,这显然意味着没有最大数量。我有4个内核/8个线程,将此值设置为4,并且VS现在一次只编译4个文件,而不是8个。
这些说明基于Visual Studio 2017,但我认为有几个版本是这样的。
4c8rllxm2#
对于Visual Studio 2015,将“
Maximum number of parallel project builds
“更改为所需的数字。(可以是m/c中处理器数量的一半)菜单〉工具〉选项〉项目和解决方案〉生成和运行。编辑值。
VS2015截图
此外,最大并发c编译可以在
菜单〉工具〉选项〉项目和解决方案〉VC项目设置〉最大并发c++编译〉编辑值。
请注意,如果使用0,则将使用所有CPU。
1rhkuytd3#
我发现了一个对我来说很有效的解决方案。手动限制VS进程的关联性。打开任务管理器,转到“详细信息”选项卡,右键单击
devenv.exe
,选择“设置关联性”。在对话框中取消选中几个核心。就是这样。所有衍生的cl.exe
进程将继承关联性,因此不会在未选中的核心上运行。第一次
此外,请前往为Visual Studio的功能请求投票:https://developercommunity.visualstudio.com/content/idea/436208/limit-cpu-usage-of-visual-studio.html
6ioyuze24#
用于C++
其中X是编译器驱动程序的数量。我使用它来限制编译Tensorflow源代码时的CPU利用率。
请阅读以下内容以了解更多详细信息:ms's blog on vs2010 c++ parallel building
0s0u357o5#
一个更优的答案来自于Mikhail Virovets的https://developercommunity.visualstudio.com/comments/497084/view.html
将编译器进程优先级降低到正常值以下。这意味着它将尽可能多地使用CPU,但不会干扰您正在尝试使用的其他东西。
定义注册表项:
然后创建一个名为
CpuPriorityClass
= 5的DWORD值(5表示“低于正常值”)。请注意,这会影响所有名为“cl.exe”的进程。
zphenhs46#
/MP
选项可以做到这一点。它限制了在构建项目时产生的进程数。因此,在您的情况下,您可以像/MP1
(/MP[processMax]
,其中processMax
是您希望使用的最大进程数)这样使用它。6ljaweal7#
从VS2022版本17.3及更高版本开始,实现这一点的最佳方法是限制构建过程优先级。
如果构建影响了您拥有一个响应的工作环境,那么这就是适合您的特性!
从Visual Studio 2022版本17.3 Preview 1开始,工具-〉选项-〉"项目和解决方案"-〉"生成并运行"-〉"以低进程优先级运行生成"下的新选项允许您降低下一个生成的优先级。如果MSBuild节点已经以上一个优先级运行,然后给它们几分钟的时间让它们超时,或者重新启动IDE以关闭它们。
点击此处了解更多信息。
yeotifhr8#
如果你运行的是Windows Vista/7(可能是XP,但不确定),这真的很简单。Ctrl +Shift+Esc启动任务管理器。单击“进程”选项卡查找需要更改其处理器关联的进程右键单击该进程单击“设置关联”在此处可以选择进程将使用的处理器。编辑:您必须是管理员才能使其工作。