почему Visual Studio 2010 (msbuild?) не собирается быстрее? - PullRequest
3 голосов
/ 16 июля 2011

Часто при создании большого решения со многими проектами в Visual Studio 2010 монитор ресурсов Windows 7 будет показывать, что devenv.exe не отвечает, однако для среднего процессора показывается меньшее число, например 0,91, как показано:

Visual Studio 2010 slow build on AMD Phenom II x4

и это на Windows 7 x64 с 4-ядерным процессором AMD Phenom II 920, 8 ГБ ОЗУ.Visual Studio не отвечает, но вряд ли использует ресурсы ЦП.

Когда я попытался запустить сборку с msbuild.exe и переключателем " / maxcpucount: 4 ",Среднее значение ЦП по-прежнему остается низким, а графики RHS никогда не показывают значение выше 5-10%.

Почему Visual Studio 2010 (или msbuild), похоже, не использует преимущества ЦП во времясборка?

Ответы [ 3 ]

5 голосов
/ 16 июля 2011

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

Что касается того, почему он показывает, что он не отвечает, я думаю, что процесс сборки по какой-то причине (какв (кто-то сделал плохую работу по реализации), блокируя приложение от ответа на запросы от ОС.Приложению не нужно достигать 100% загрузки ЦП, чтобы считаться «не отвечающим», просто нужно где-то застревать в главном потоке, что мешает ему своевременно реагировать на ОС.

2 голосов
/ 31 октября 2011

Кажется, что MSBuild не любит строить несколько проектов параллельно, только несколько файлов в одном проекте параллельно.

0 голосов
/ 16 июля 2011

Почему это медленно и не работает, как ожидалось?Ну, потому что он построен с нуля с использованием передовых технологий.Вот почему!

( Rant : VS 2010 - огромный шаг назад ИМХО. VS 2008 гораздо более стабильный / отзывчивый (и работает), но позволяет оставить личные мнения в стороне)

ДваОбходные пути для использования преимуществ нескольких ядер:

  • Установите MSBuild в качестве внешнего инструмента, как указано здесь , и назначьте ему ярлык (например, Ctrl + Shft + B) для быстрого доступа.
  • Установить BuildInParallel для задания MSBuild для задачи true

    <Target Name="RunInParallel">
      <MSBuild BuildInParallel="true"
               Projects="@(Projects)"
               Targets="RunCodeAnalysis">
      </MSBuild>
    </Target>
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...