可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
Every time I compile using visual studio the rest of my computer crawls because visual studio is hogging all the processors. Is there a way to limit the number of processors that visual studio is using so I can still get some work done during the compilation time?
By the way, I am using visual studio 2013 and 2015 and programming in C++.
Thanks!
回答1:
For Visual Studio 2015, change "Maximum number of parallel project builds
" to desired number. (May be half number of processers in your m/c)
Menu> Tools > Options >
Projects and solutions > Build and Run. Edit value.
Screenshot from VS2015
Further, maximum concurrent c++ compilation can be restricted in
Menu> Tools > Options >
Projects and solutions > VC++ Project Settings > Maximum concurrent c++ compilation > Edit value.
Please note, if used 0 then all CPU will be used.
回答2:
Setting the "Maximum number of parallel project builds" is not the answer if you have a single C++ project with lots of .cpp files and you don't want 8 building at once. To control that, go to Tools > Options > Projects and Solutions > VC++ Project Settings, and in the Build section, set Maximum Concurrent C++ Compilations to the max number of .cpp files you want to compile in parallel. The default setting appears to be 0, which apparently means there is no maximum. I have 4 cores/8 threads, and set this value to 4, and VS now only compiles 4 files at a time instead of 8.
These instructions are based on Visual Studio 2017, but I think it's been this way for a few releases.
回答3:
I found a workaround that actually works for me. Manually restrict affinity for VS process. Open Task Manager, go to Details tab, right click on devenv.exe
, select "Set affinity". In the dialog untick several cores. That's it. All spawned cl.exe
processes will inherit affinity, and thus won't run on unticked cores.
Also, go and cast your vote for a feature request for Visual Studio: https://developercommunity.visualstudio.com/content/idea/436208/limit-cpu-usage-of-visual-studio.html
回答4:
For C++ Use
*msbuild /p:CL_MPCount=X
Where X is the number of compiler driver. I use this to limit the CPU utilization when compiling the Tensorflow source code.
Read this for more details: ms's blog on vs2010 c++ parallel building
回答5:
A more optimal answer comes from Mikhail Virovets at
https://developercommunity.visualstudio.com/comments/497084/view.html
Decrease the compiler process priority to below normal. This means it will use as much CPU as possible but without interfering with other things you're trying to use.
Define a registry key:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\cl.exe\PerfOptions
Then create a DWORD value named CpuPriorityClass
= 5 (5 means "below normal").
Note that this affects all processes named "cl.exe".
回答6:
The /MP
option might do it. It limits the number of processes that are spawned when you build a project. So, in your case, you would use it like this /MP1
(/MP[processMax]
, where processMax
is the maximum amount of processes that you want to use).
回答7:
If you're running Windows Vista/7 (possibly XP, but not sure) it's really rather simple.
Type in: Control+Shift+Esc to get your taskmanager up.
Click on the Processes tab
Find the process that needs its processor affinity changed
Right-click on the process
Click on "Set Affinity"
Here you can select which processor(s) your process will use.
EDIT: You have to be administrator to get this to work.