Почему Visual Studio не может работать более чем на одном ядре? Процессор на 25% - PullRequest
6 голосов
/ 10 сентября 2008

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

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

Ответы [ 8 ]

10 голосов
/ 10 сентября 2008

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

/ MP

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

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

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

6 голосов
/ 23 апреля 2009

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

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

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

4 голосов
/ 23 июля 2013

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

В Visual Studio 2010 включена опция «Максимальное количество параллельных проект строит ". Хотя не было никаких признаков каких-либо ограничений, эта опция IDE работала только для проектов C ++. К счастью, это ограничение больше не распространяется на Visual Studio 11. Скорее, теперь есть полная поддержка параллельных сборок на других языках. Смотреть таким образом, запустите копию Process Explorer одновременно с решением многочисленные проекты строит. Вы увидите, что несколько MSBuild создаются экземпляры - столько, сколько указано в «максимальном количестве» параллельных сборок проекта. "

3 голосов
/ 29 июля 2010

Теперь, когда 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.

2 голосов
/ 10 сентября 2008

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

от блога somasegar

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

0 голосов
/ 12 января 2018

Для 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 ++:

Задает максимальное количество проектов Visual C ++, которые могут быть собраны одновременно. Для оптимизации процесса сборки максимальное количество параллельных сборок проекта автоматически устанавливается равным количеству процессоров вашего компьютера. Максимум 32.

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

максимальное количество параллельных сборок проекта Задает максимальное количество проектов Visual C ++ и Visual C #, которые могут быть собраны одновременно. Для оптимизации процесса сборки максимальное количество параллельных сборок проекта автоматически устанавливается равным количеству процессоров вашего компьютера. Максимум 32.

0 голосов
/ 10 сентября 2008

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

Но мне кажется, что он использует многоядерные процессоры. Интеллектуальность кажется многопоточным. Система сборки имеет многопроектную сборку, а также C ++ для многофайловой сборки.

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

0 голосов
/ 10 сентября 2008

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...