¿Qué componentes de PC tienen el mayor impacto en sus tiempos de compilación para Visual Studio?

16

¿Qué especificaciones de PC tienen el mayor impacto en sus tiempos de compilación? ¿Disco? ¿Velocidad de reloj? ¿Número de núcleos de CPU?

Rob Allen
fuente
1
¿No es esta una pregunta de programación? ¿Tendría una audiencia más grande en StackOverflow?
Kurt W. Leucht

Respuestas:

13

El factor que he encontrado hace la mayor diferencia no es un factor físico, sino uno de software: ¿Qué antivirus tiene instalado?

Algunos productos antivirus no manejan muy bien el desarrollo de software: ven que se reescriben todos estos archivos de aplicaciones, sospechan de errores y vuelven a analizar cada archivo cada vez.

(Consulte /programming/1170078/is-it-usual-for-aspx-files-to-take-5-10-seconds-to-save/1170129#1170129 para obtener más información).

Por otro lado, si desea mejorar el rendimiento de una máquina existente, no hay nada mejor que maximizar la memoria disponible para ganar rápidamente.

Bevan
fuente
La PC en la oficina está utilizando TrendMicro OfficeScan. Mi computadora portátil de desarrollo en casa usa AVG 8.
Rob Allen
3
"Trend Micro". Oh querido. Si no puede cambiar eso por otra cosa, despídase de cualquier actuación.
Bevan el
8

Aquí hay una buena investigación de Scott Hanselman sobre el uso de múltiples CPU para MSBUild. Las aceleraciones son bastante dramáticas.

Editar: Sin embargo, debo tener en cuenta que para tener una buena experiencia con Visual Studio, necesita mucha RAM. :)

JP Alioto
fuente
+1 Buen artículo sobre el tema. Me olvide de eso. Creo que también hizo un podcast sobre esto.
BinaryMisfit
4

Mi experiencia personal con una base de código C ++ de tamaño razonable:

Maquina vieja

Procesador: Pentium 4 HT 3.06 GHz
Memoria: 1 GB DDR RAM (PC 2100, entonces 333 MHz)
Disco: disco duro de 7200 RPM (UDMA 100, si la memoria sirve)
Tiempo de compilación: 50 minutos

Nueva máquina:

Procesador: Core i7 720QM (8 procesadores lógicos) a 1.6 GHz, turbo boost a 1.73 GHz cuando todos los núcleos están activos
Memoria: 8 GB DDR3 RAM a 1066 MHz
Disco: disco duro 7200 RPM (SATA 2)
Tiempo de compilación: 4 minutos (con / MP )


Conclusión: cuantos más procesadores, mejor, incluso a velocidades de reloj relativamente bajas. Un SSD mejoraría aún más los tiempos, pero a partir de la observación de los mensajes de compilación, dudo que lo mejore en más de 30 segundos más o menos.

mmyers
fuente
3

Hasta donde recuerdo, principalmente procesador y memoria. Un google rápido reveló varios ajustes que pueden mejorar los tiempos de compilación.

Joel recientemente publicó sobre el efecto de los discos de estado sólido en las compilaciones aquí . La velocidad del disco generalmente no mejora drásticamente el tiempo de compilación. Sin embargo, de acuerdo con esto , tiene un efecto como lo señala lyngbym .

BinaryMisfit
fuente
1

Para construir programas en C ++, el factor # 1 antes que todo lo demás es estructural: si el código fuente está muy estructurado verticalmente, tendrá un impacto devastador en los tiempos de compilación, especialmente en las compilaciones incrementales. Reestructuré localmente algunas partes de un proyecto para una mejora dramática en un Xeon de cuatro núcleos. 18 meses después y ellos (las personas propietarias del proyecto) aún no pueden igualar los tiempos de construcción de mi reloj de pared, incluso en las máquinas Core i7.

El efecto (positivo o negativo) de su diseño de software se multiplica en cada miembro de su equipo y en cada compilación que realizan.

Sam Harwell
fuente
¿Tiene un enlace que describe diferentes estructuras de código, por favor? Creo que sé a qué se refiere, pero no estoy seguro.
Rob Allen
Tengo problemas para encontrar mis referencias, pero la idea general es 1) usar declaraciones de reenvío siempre que sea posible, 2) incluir archivos solo cuando una declaración de reenvío no funcione y 3) asegurarse de que el archivo que incluya no declare más cosas que son necesarias, lo que a su vez podría hacer que incluya más archivos que de otro modo no necesitaría para el archivo fuente particular que se está compilando (también conocido como mantener sus encabezados pequeños y usar declaraciones de reenvío en ellos al igual que lo hace para los archivos fuente).
Sam Harwell el
1

Xoreax IncrediBuild es un sistema de compilación distribuido que ha hecho una gran mejora en los tiempos de compilación donde trabajo. (Desafortunadamente, los tiempos de enlace aún son bastante largos, particularmente las versiones de lanzamiento que usan la optimización de todo el programa y la generación de código de tiempo de enlace, pero eso es de esperar).

texto alternativo

bk1e
fuente