Будет ли больше процессоров/ядер работать с временем сборки VS.NET?
Мне было интересно, знает ли кто-нибудь, есть ли у Visual Studio.NET параллельный процесс сборки или нет? У меня есть решение с большим количеством проектов, каждый проект имеет много разметки/кода, множество типов и т.д. Просто сижу там с intellisense, работает до 700 МБ. Но время сборки очень медленное и только кажется максимальным из одного из двух ядер процессора.
Означает ли это, что процесс сборки является однопоточным? Цепочка зависимостей сборки решения не является линейной, поэтому я не понимаю, почему она не может строить некоторые из проектов параллельно. Я помню, как Джоэл Спольский писал о своем новом SSD, и как это не помогало во время компиляции, но он не упомянул, какой компилятор он использовал. Мы используем VS 2005. Кто-нибудь знает, как работает компиляция? И это в любом случае лучше/лучше в 2008/2010 году?
EDIT: Много хороших отзывов, здесь, но меня интересует только С# и ASP.NET. Нет любви к нам, веб-люди?
Ответы
Ответ 1
MSBuild (который VS использует для сборки, с 2005/.NET2) поддерживает параллельные сборки. По умолчанию VS будет устанавливать максимальную степень parallelism на количество процессоров. Использовать инструменты | Варианты | Проекты и решения | Build и Run, чтобы переопределить это значение по умолчанию.
Конечно, любая сборка может иметь более ограниченную (или нет) способность разрешать параллельные сборки. Например. только одна сборка в решении не дает возможности строить параллельно. Точно так же большое количество сборок с большим количеством зависимостей может блокировать parallelism (зависит от B, C зависит от A & B, D зависит от C не имеет возможности для параллельных построений).
(NB. для С++, в VS 2005 и 2008 использует свою собственную систему сборки, в 2010 С++ также будет построен с MSBuild.)
Ответ 2
У Scott Hanselman есть сообщение в блоге от пары лет назад, в котором подробно описывается получение Быстрые сборки с помощью MSBuild с использованием параллельных сборных и многоядерных процессоров, которые должны быть представляет интерес. У него также есть последующее сообщение Hack: параллельные MSBuild из среды Visual Studio IDE.
Ответ 3
Я бы предположил, что накопитель SSD обеспечит самое большое преимущество явно для сборки
SuperUser, который также опровергает статью Джоэля
SO просят лучший ноутбук и т.д.: обсуждения на SSD, ядрах, работе VS и т.д.
Квалификатор: я купил Intel SSD для домашнего использования месяц или 3 назад. Лорд это быстро и, возможно, лучший кусок набора, который я когда-либо покупал, за исключением моего Voodoo 2...
Ответ 4
В VS2k5 это зависит от того, какой язык вы пытаетесь использовать. C/С++ имеет "экспериментальную" поддержку многопоточного здания, но эта функция официально не поддерживается до 2k8 с помощью /m: switch
Ответ 5
Я использовал параллельные сборки в Visual Studio 2008. Он ускоряет работу, но имеет много раздражающих побочных эффектов.
Я часто получаю неудачные сборки не потому, что некоторая компиляция не удалась, а потому, что VS не удалось записать в заблокированную базу данных символов. У меня также есть действительно перепутанные результаты Intellisense. Иногда мне нужно повторить сборку два или три раза, чтобы добиться окончательного успеха.