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





У меня VS2008 работает на всех 4 процессорах. Просто установите эту переменную среды / флаг проекта.
/ МП
(Его можно установить в настройках C / C++, Дополнительно. В настройках проекта)
Обновлено: флаг MP также может принимать число, например / MP2, что означает, что он будет работать только на 2 ядрах. Если оставить его как / MP, это означает, что он будет работать на максимальном количестве ядер.
Edit2: Флаг MP, вероятно, предназначен только для компилятора.
Это будет работать только для проектов C / C++. У него нет опции для C#.
Кроме того, это будет иметь значение только в том случае, если ваше решение имеет несколько проектов или, возможно, конфигураций сборки.
Имеет значение, если вы загружаете более одного исходного файла в один вызов компилятора. К сожалению, make-файлы не работают.
См. msdn.microsoft.com/en-us/library/bb385193.aspx / MP (сборка с несколькими процессами)
Мы также добавили поддержку нескольких ядер для выполнения многопоточных сборок в командной строке для тех из вас, у кого много проектов и длительное время сборки. Для включения поддержки нескольких ядер требуется всего несколько новых свойств, и MSBuild управляет всей работой для эффективного и действенного планирования проектов. Команда MSBuild протестировала эту возможность масштабирования, создав несколько проектов на машине с 64-процессорным процессором.
то есть от блог somasegar
Так что они вроде как начали это делать, ну, по крайней мере, для сборки.
Флаг / MP предназначен только для сборок, по крайней мере, согласно этому msdn
Я бы хотел ошибиться в этом, но я почти уверен, что это только для сборок. Что, конечно, по-прежнему очень полезно.
Я уверен, что это очень сложно. Огромная существующая база непоточного кода с тяжелым графическим интерфейсом для многопоточного. Для меня звучит как 10.
Но мне кажется использует многоядерность. Intellesense кажется резьбовым. В системе сборки предусмотрена возможность построения нескольких проектов, а также многофайловая сборка на C++.
Ваши проблемы с этими инструментами звучат немного глубже, чем то, насколько хорошо они используют ваши процессоры.
Вы можете попросить VS компилировать несколько проектов параллельно, а также параллельно (!?) Компилировать внутри проекта.
Инструменты> Параметры> Проекты и решения> максимальное количество параллельных сборок проектов.
Это также приведет к параллельной сборке C++ и C#!
Теперь, когда Visual Studio 2010 был выпущен ненадолго, рассмотрите возможность обновления, чтобы использовать атрибут parallelTestCount в файле .testsettings MSTest, как описано в Как: запускать модульные тесты быстрее, используя компьютер с несколькими процессорами или ядрами.
Есть несколько ограничений, например:
Пример использования 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.
Это работает для всего? Единственное, что я знаю о том, что он работает, - это сборка, ну, по крайней мере, это то, для чего он работает, согласно MS.