С++ Как ограничить многопроцессорную компиляцию визуальных студий

Каждый раз, когда я скомпилирую визуальную студию, остальная часть моего компьютера сканирует, потому что визуальная студия забивает все процессоры. Есть ли способ ограничить количество процессоров, которые использует визуальная студия, поэтому я все еще могу выполнить некоторую работу во время компиляции?

Кстати, я использую visual studio 2013 и 2015 и программирование в C++.

Благодарю!

Ответ 1

Для Visual Studio 2015 измените " Maximum number of parallel project builds " на желаемое число. (Может быть половина числа обработчиков в вашем т/с)

Меню> Инструменты> Параметры> Проекты и решения> Построить и запустить. Изменить значение.

Скриншот из VS2015

enter image description here

Ответ 2

Установка "Максимального числа параллельных сборок проектов" не подходит, если у вас есть один C++ проект с большим количеством файлов .cpp, и вы не хотите, чтобы 8 сборок выполнялись одновременно. Чтобы управлять этим, перейдите в Инструменты > Параметры > Проекты и решения > V C++ Настройки проекта и в разделе Сборка установите Максимальное число одновременных компиляций C++ на максимальное количество файлов .cpp, которые вы хотите компилировать параллельно. По умолчанию установлено значение 0, что, очевидно, означает, что максимума нет. У меня 4 ядра /8 потоков, и я установил это значение на 4, а VS теперь компилирует только 4 файла за раз вместо 8.

Эти инструкции основаны на Visual Studio 2017, но я думаю, что так было в некоторых выпусках.

Setting Max Concurrent C++ Compilations

Ответ 3

Для использования C++

*msbuild /p:CL_MPCount=X 

Где X - номер драйвера компилятора. Я использую это, чтобы ограничить использование ЦП при компиляции исходного кода Tensorflow.

Прочтите это для более подробной информации: ms блог на vs2010 C++ параллельное здание

Ответ 4

Я нашел обходной путь, который на самом деле работает для меня. Вручную ограничить сродство к процессу VS. Откройте диспетчер задач, перейдите на вкладку "Сведения", щелкните правой кнопкой мыши devenv.exe, выберите "Установить соответствие". В диалоговом окне уберите галочку с нескольких ядер. Это. Все порожденные процессы cl.exe унаследуют сходство и, следовательно, не будут работать на неотмеченных ядрах.

enter image description here enter image description here

Кроме того, иди и проголосуй за запрос функции для Visual Studio: https://developercommunity.visualstudio.com/content/idea/436208/limit-cpu-usage-of-visual-studio.html

Ответ 5

Опция /MP может это сделать. Он ограничивает количество процессов, которые порождаются при создании проекта. Таким образом, в вашем случае вы будете использовать его как этот /MP1 (/MP[processMax], где processMax - это максимальное количество процессов, которое вы хотите использовать).

Ответ 6

Более оптимальный ответ дает Михаил Вировец в https://developercommunity.visualstudio.com/comments/497084/view.html

Уменьшите приоритет процесса компилятора до уровня ниже нормального. Это означает, что он будет использовать как можно больше ресурсов ЦП, но не мешая другим вещам, которые вы пытаетесь использовать.

Определите раздел реестра:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\cl.exe\PerfOptions

Затем создайте значение DWORD с именем CpuPriorityClass = 5 (5 означает "ниже нормы").

Обратите внимание, что это влияет на все процессы с именем "cl.exe".

Ответ 7

Если вы используете Windows Vista/7 (возможно, XP, но не уверены), это довольно просто. Введите: Control + Shift + Esc, чтобы запустить ваш taskmanager. Перейдите на вкладку "Процессы". Найдите процесс, требующий изменения его процессора. Щелкните правой кнопкой мыши процесс. Нажмите "Установить близость". Здесь вы можете выбрать, какой процессор использовать ваш процесс. EDIT: вы должны быть администратором, чтобы заставить это работать.