Поможет ли больше процессоров / ядер при сборке VS.NET? - PullRequest
11 голосов
/ 05 апреля 2010

Мне было интересно, знает ли кто-нибудь, есть ли в Visual Studio .NET процесс параллельной сборки или нет? У меня есть решение с большим количеством проектов, у каждого проекта есть много разметки / кода, много типов и т. Д. Просто сидя с включенным intellisense запускает его до 700 МБ. Но время сборки очень медленное, и кажется, что оно работает только с одним из моих двух процессорных ядер.

Означает ли это, что процесс сборки является однопоточным? Цепочка зависимостей сборки моего решения не является линейной, поэтому я не понимаю, почему он не может строить некоторые проекты параллельно. Я помню, как Джоэл Спольски писал о своем новом SSD и о том, как он не помогал во время компиляции, но он не упомянул, какой компилятор он использовал. Мы используем VS 2005. Кто-нибудь знает, как работает его компиляция? И чем отличается / лучше в 2008/2010?

РЕДАКТИРОВАТЬ: Здесь много хороших ответов, но меня особенно интересуют C # и ASP.NET. Нет любви для нас, веб-людей?

Ответы [ 5 ]

9 голосов
/ 05 апреля 2010

MSBuild (который VS использует для сборки, начиная с 2005 / .NET2) поддерживает параллельные сборки. По умолчанию VS установит максимальную степень параллелизма для вашего числа процессоров. Использовать инструменты | Варианты | Проекты и решения | Построить и запустить, чтобы переопределить это значение по умолчанию.

Конечно, любая сборка может иметь более ограниченную (или нет) емкость для параллельных сборок. Например. только одна сборка в решении не дает возможности для параллельной сборки. В равной степени большое количество сборок с большим количеством зависимостей может блокировать параллелизм (A зависит от B, C зависит от A & B, D зависит от C, не имеет возможности для параллельных сборок).

(Примечание: для C ++, в VS 2005 и 2008 используется собственная система сборки, в 2010 C ++ также будет собираться с MSBuild.)

4 голосов
/ 05 апреля 2010

Скотт Хансельман написал в своем блоге пару лет назад сообщение о том, как получить Ускоренные сборки с MSBuild с использованием Parallel Builds и многоядерных процессоров , которые должны представлять интерес. У него также есть пост Hack: Parallel MSBuilds из среды IDE Visual Studio .

2 голосов
/ 05 апреля 2010

Я бы предположил, что SSD-накопитель обеспечит наибольшее преимущество явно для сборок

SuperUser , который также опровергает статью Джоэла

ТАК просим лучшего ноутбука и т. Д. : обсуждения SSD, ядер, как работает VS и т. Д.

Квалификатор: Я купил твердотельный накопитель Intel для домашнего использования месяц или 3 назад. Господи, это быстро и, возможно, лучшая часть комплекта, который я когда-либо покупал, за исключением моего Voodoo 2 ...

1 голос
/ 05 апреля 2010

С VS2k5 это зависит от того, какой язык вы пытаетесь использовать. C / C ++ имеет «экспериментальную» поддержку многопоточного построения, но эта функция официально не поддерживается до 2k8 с использованием ключа / m:

0 голосов
/ 05 апреля 2010

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

Я часто получаю неудачные сборки не потому, что не удалось выполнить какую-то компиляцию, а потому что VS не смог записать в заблокированную базу данных символов. Я также действительно испортил результаты Intellisense. Иногда мне приходится повторять сборку два или три раза, чтобы добиться окончательного успеха.

...