2010-04-05 8 views
11

Me preguntaba si alguien sabía si Visual Studio .NET tenía un proceso de compilación paralelo o no. Tengo una solución con muchos proyectos, cada proyecto tiene muchos marcadores/códigos, muchos tipos, etc. Simplemente sentado allí con intellisense funciona hasta unos 700MB. Pero los tiempos de compilación son muy lentos y solo parecen alcanzar el máximo en uno de mis dos núcleos de CPU.¿Serán más CPUs/núcleos de ayuda con los tiempos de compilación de VS.NET?

¿Significa esto que el proceso de compilación tiene un solo subproceso? La cadena de dependencia de compilación de mi solución no es lineal, por lo que no veo por qué no podría estar construyendo algunos de los proyectos en paralelo. Recuerdo que Joel Spolsky blogueó sobre su nueva SSD, y cómo no ayudó con los tiempos de compilación, pero no mencionó qué compilador estaba usando. Estamos usando VS 2005. ¿Alguien sabe cómo funciona la compilación? ¿Y es diferente/mejor en 2008/2010?

EDIT: Muchas buenas respuestas, aquí, pero estoy interesado específicamente en C# y ASP.NET. No hay amor para nosotros, la gente de la web?

+0

¿Utiliza algún plugin de VS que consuma demasiados recursos? ¿Su máquina tiene suficiente memoria RAM que la mayor cantidad posible se puede almacenar en caché en la memoria RAM sin cambiar? –

+0

Ver también http://stackoverflow.com/questions/1814015/was-visual-studio-2008-or-2010-written-to-use-multi-cores – Brian

+0

Me preguntaba sobre el carnero.esta es una computadora portátil con 2 núcleos y 3 GB. No parece mucho, pero si el proceso devenv.exe solo usa 700-900 MB, ¿necesito más? – LoveMeSomeCode

Respuesta

9

MSBuild (que VS utiliza para hacer construcciones, desde 2005/.NET2) admite compilaciones paralelas. Por defecto, VS establecerá el grado máximo de paralelismo con su número de procesadores. Use herramientas | Opciones | Proyectos y soluciones | Build y Run para anular este valor predeterminado.

Por supuesto, cualquier construcción puede tener una capacidad más limitada (o nula) para permitir compilaciones paralelas. P.ej. solo un ensamblaje en una solución no ofrece alcance para construir en paralelo. Igualmente, un gran número de ensamblados con muchas dependencias pueden bloquear el paralelismo (A depende de B, C depende de A & B, D depende de que C no tenga alcance para construcciones paralelas).

(NB. Para C++, en VS 2005 & 2008 utiliza su propio sistema de construcción, en 2010 también se construirá C++ con MSBuild.)

+0

Los tiempos de construcción de mi VC++ 2008 pasaron de 50 minutos a 5 (con/MT) cuando cambié de un P4 HT a un nuevo Core i7 Q a una velocidad de reloj más baja (incluso con turbo boost). Sé que el procesador no fue la única parte que mejoró, pero aún estaba bastante impresionado. –

+0

@mmyers: una compilación puede estar limitada por disco IO, espacio de memoria, ancho de banda de memoria o CPU --- y diferentes en diferentes momentos de la compilación. En general, quiere la mayor cantidad posible de todas ellas (es decir, presupuestos :-(aplicar). Una construcción específica puede ser ayudada por una más que otra, pero el próximo proyecto podría estar limitado en otra parte. – Richard

+0

Sí, estoy de acuerdo. A juzgar por los gráficos de la CPU, creo que mi cuello de botella ahora es la velocidad del disco duro (ambos sistemas tienen unidades de 7200 RPM). Así que mi próxima actualización será una SSD en cuanto las buenas sean asequibles. –

1

Con VS2k5 que depende del idioma que está intentando usar. C/C++ tiene soporte 'experimental' para construcción multiproceso, pero esta característica no es oficialmente admitida hasta 2k8 usando/m: switch

2

Yo sugeriría que una unidad SSD proporcionaría el mayor beneficio explicitly for builds

SuperUser que también refuta el artículo de Joel

SO asking for best laptop etc: debates sobre los SSD, núcleos, cómo VS funciona etc

Calificador: I compró un Intel SSD para uso doméstico hace un mes o 3 atrás. Lordy es rápido y podría decirse que es la mejor pieza que jamás haya comprado, excepto mi Voodoo 2 ...

+1

Sé que hice esta pregunta hace 2 años, pero desde entonces compré 3 SSD y mis tiempos de construcción son LOCA. – LoveMeSomeCode

0

He utilizado compilaciones paralelas en Visual Studio 2008. Agiliza las cosas, pero tiene muchos efectos secundarios molestos.

A menudo obtengo compilaciones fallidas no porque haya fallado alguna compilación, sino porque VS no pudo escribir en una base de datos de símbolos bloqueada. También me he equivocado mucho con los resultados de Intellisense. A veces tengo que repetir la compilación dos o tres veces para obtener un éxito final.

Cuestiones relacionadas