Почему Visual Studio не может работать более чем на одном ядре? ЦП на 25%

Я запускаю Visual Studio 2008 с ужасной тестовой средой MS. Проблема в том, что он загружает мой процессор на 100% (ну 25% на четырехъядерном).

У меня вопрос: почему Visual Studio не может работать более чем на одном ядре? Конечно, M $ должен иметь достаточный дескриптор для потоковой передачи, чтобы это работало.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
6
0
21 598
8

Ответы 8

У меня VS2008 работает на всех 4 процессорах. Просто установите эту переменную среды / флаг проекта.

/ МП

(Его можно установить в настройках C / C++, Дополнительно. В настройках проекта)

Обновлено: флаг MP также может принимать число, например / MP2, что означает, что он будет работать только на 2 ядрах. Если оставить его как / MP, это означает, что он будет работать на максимальном количестве ядер.

Edit2: Флаг MP, вероятно, предназначен только для компилятора.

Это работает для всего? Единственное, что я знаю о том, что он работает, - это сборка, ну, по крайней мере, это то, для чего он работает, согласно MS.

pete blair 10.09.2008 17:01

Это будет работать только для проектов C / C++. У него нет опции для C#.

David Basarab 10.09.2008 17:22

Кроме того, это будет иметь значение только в том случае, если ваше решение имеет несколько проектов или, возможно, конфигураций сборки.

Jon Trauntvein 05.11.2008 02:20

Имеет значение, если вы загружаете более одного исходного файла в один вызов компилятора. К сожалению, make-файлы не работают.

Lothar 24.11.2015 06:05

См. msdn.microsoft.com/en-us/library/bb385193.aspx / MP (сборка с несколькими процессами)

Paul Zahra 12.01.2018 12:56

Мы также добавили поддержку нескольких ядер для выполнения многопоточных сборок в командной строке для тех из вас, у кого много проектов и длительное время сборки. Для включения поддержки нескольких ядер требуется всего несколько новых свойств, и MSBuild управляет всей работой для эффективного и действенного планирования проектов. Команда MSBuild протестировала эту возможность масштабирования, создав несколько проектов на машине с 64-процессорным процессором.

то есть от блог somasegar

Так что они вроде как начали это делать, ну, по крайней мере, для сборки.

Флаг / MP предназначен только для сборок, по крайней мере, согласно этому msdn

Я бы хотел ошибиться в этом, но я почти уверен, что это только для сборок. Что, конечно, по-прежнему очень полезно.

Я уверен, что это очень сложно. Огромная существующая база непоточного кода с тяжелым графическим интерфейсом для многопоточного. Для меня звучит как 10.

Но мне кажется использует многоядерность. Intellesense кажется резьбовым. В системе сборки предусмотрена возможность построения нескольких проектов, а также многофайловая сборка на C++.

Ваши проблемы с этими инструментами звучат немного глубже, чем то, насколько хорошо они используют ваши процессоры.

Вы можете попросить VS компилировать несколько проектов параллельно, а также параллельно (!?) Компилировать внутри проекта.

Инструменты> Параметры> Проекты и решения> максимальное количество параллельных сборок проектов.

Это также приведет к параллельной сборке C++ и C#!

Теперь, когда Visual Studio 2010 был выпущен ненадолго, рассмотрите возможность обновления, чтобы использовать атрибут parallelTestCount в файле .testsettings MSTest, как описано в Как: запускать модульные тесты быстрее, используя компьютер с несколькими процессорами или ядрами.

Есть несколько ограничений, например:

  1. Поддерживаются только простые модульные тесты (т.е. исключая закодированные тесты пользовательского интерфейса и тесты, размещенные на ASP.NET)
  2. Тесты должны быть потокобезопасными (все тесты выполняются в одном процессе)
  3. Вы не можете собирать покрытие кода (среди других данных и диагностики) одновременно

Пример использования 0 для обозначения Автоматически определять (по умолчанию 1):

<?xml version = "1.0" encoding = "UTF-8"?>
<TestSettings
  name = "Release"
  id = "{GUID}"
  xmlns = "http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
  <Description>
    These are default test settings for a local test run.
  </Description>
  <Execution parallelTestCount = "0">
    (...)
  </Execution>
</TestSettings>

Несколько блогов отметили, что возможно, вам придется закрыть и снова открыть свой проект для Visual Studio, чтобы заметить, что вы добавили / изменили этот атрибут. Кроме того, если вы отредактируете файл настроек теста с помощью графического интерфейса пользователя, вам, вероятно, придется повторно добавить атрибут parallelTestCount.

Если кто-то столкнется с этим старым вопросом, VS2012 представил параллельные сборки как стандартная функция. Цитата из статьи:

Visual Studio 2010 included an option for "maximum number of parallel project builds." Although there was no indication of any restriction, this IDE option only worked for C++ projects. Fortunately, this restriction no longer applies to Visual Studio 11. Rather, there's now full support for parallel builds in other languages as well. To view this, run a copy of Process Explorer at the same time a solution with numerous projects is building. You'll see that multiple MSBuild instances are created -- as many as specified in the "maximum number of parallel project builds."

Для Visual Studio 2010 перейдите в Инструменты> Параметры> Проекты и решения> Сборка и запуск.

Затем вы увидите запись для ввода числа для «максимального количества параллельных сборок проекта»; у моего ПК процессор i7-3770, четырехъядерный с HyperThreading, поэтому он установлен на 8.

Для получения информации о различных версиях Visual Studio перейдите сюда и выберите свою версию: https://msdn.microsoft.com/en-us/library/cyhcc7zc(v=vs.100).aspx

например для Visual Studio 2010 это свойство влияет только на сборки C++:

Specifies the maximum number of Visual C++ projects that can build at the same time. To optimize the build process, the maximum number of parallel project builds is automatically set to the number of CPUs of your computer. The maximum is 32.

Но для Visual Studio это для C++ и C#:

maximum number of parallel project builds Specifies the maximum number of Visual C++ and Visual C# projects that can build at the same time. To optimize the build process, the maximum number of parallel project builds is automatically set to the number of CPUs of your computer. The maximum is 32.

Другие вопросы по теме