western velociraptor mercadolibre visual-c++ hardware performance compilation

visual-c++ - mercadolibre - wd velociraptor vs ssd



¿Por qué WD Velociraptor no acelera mi compilación de VC++ significativamente? (10)

Imagino que la lectura del disco duro no fue su cuello de botella en la compilación. Realísticamente, pocas cosas necesitan ser leídas / escritas desde / hacia el disco duro. Es probable que vea un aumento en el rendimiento de más RAM o un procesador más rápido.

Varias personas por aquí recomendaron cambiar al nuevo disco duro WD Velociraptor 10000rpm . También artículos de revistas alaban la actuación. Compré uno y reflejé mi viejo sistema en él. El aumento resultante en la velocidad de compilación es algo decepcionante:

  • En mi vieja unidad Samsung (SATA, 7200), el tiempo de compilación era 16:02 .
  • En el Velociraptor la construcción toma 15:23 .

Tengo un E6600 con 1.5G ram. Es un C ++ - Proyecto con 1200 archivos. La compilación se realiza en Visual Studio 2005. La gestión acústica se desactiva (sin embargo, no hay gran diferencia).

¿Algo salió mal o es esta modesta aceleración realmente todo, puedo esperar?

Editar: Algunos recomendaron aumentar la RAM. Lo hice ahora y obtuve una ganancia mínima (3-5%) al duplicar mi RAM a 3GB.


Sugeriría de los resultados que la velocidad de latencia de su disco duro no era el cuello de botella que estaba buscando o que su proyecto ya está cerca de construirse lo más rápido posible. Otros elementos a considerar serían:

  1. tiempo de acceso al disco duro (aunque es posible que no pueda hacer mucho con esto debido a las limitaciones de velocidad del bus)
  2. Velocidad y tamaño de acceso a la RAM
  3. Velocidad del procesador
  4. Reducir procesos de fondo

Visual Studio 2005 puede compilar varios proyectos en paralelo, y lo hará de forma predeterminada en una máquina multinúcleo, pero dependiendo de cómo sus proyectos dependen entre sí, es posible que no pueda construirlos en paralelo.

Si sus archivos 1200 cpp están en un solo proyecto, probablemente no esté usando toda su CPU. Si no me equivoco, un C6600 es una CPU de cuatro núcleos.

Dave


Como muchos ya han señalado, probablemente no atacó el verdadero cuello de botella. Las partes que cambian aleatoriamente (o el código para el caso) es como se podría decir "bajos ackwards". Primero identifica el cuello de botella de rendimiento y luego cambia algo.

Perfmon puede ayudarlo a obtener una buena descripción si está vinculado a la CPU o E / S, desea ver la utilización de la CPU, la longitud de la cola del disco y los bytes de IO para obtener una primera idea de lo que está sucediendo.


~ 6% de aumento en la velocidad solo por la mejora de su disco duro. Como dijo Howler. Coge un ram más rápido y una PCU.


¿Está utilizando la opción / MP (no documentada, debe ingresarla manualmente a las opciones de su procesador) para habilitar la compilación paralela de nivel de origen? Eso acelerará tu compilación mucho más que solo un disco duro más rápido. Las ganancias de eso son marginales.


1200 archivos de origen es mucho, pero ninguno de ellos es más de un par de cientos de K, por lo que aunque todos deben leerse en la memoria, no tardará en hacerlo.

Alterar la memoria de tu sistema a 4G (sí, sí, sé sobre el 3.algo o el otro límite que tienen los sistemas operativos de 32 bits), y tal vez mirar a tu CPU proporcionará una mejora en el rendimiento mucho mayor que el simple uso de una unidad de disco más rápida.


Eso es en realidad un golpe bastante grande en la velocidad para simplemente reemplazar un disco duro. Probablemente estés atado a la memoria o a la CPU en este punto. 1.5GB es ligero en estos días, y RAM es muy barato. Es posible que vea algunas mejoras bastante grandes con más memoria.

Solo como recomendación, si tienes más de una unidad instalada, podrías intentar configurar tu directorio de compilación para que esté en algún lugar en un disco diferente al de tus archivos fuente.

En cuanto a este comentario:

Si sus archivos 1200 cpp están en un solo proyecto, probablemente no esté usando toda su CPU. Si no me equivoco, un C6600 es una CPU de cuatro núcleos.

En realidad, un C6600 no es nada. Hay un E6600 y un Q6600. El E6600 es un núcleo dual y el Q6600 es un núcleo cuádruple. En mi máquina de desarrollo utilizo una CPU de cuatro núcleos, y aunque nuestro proyecto tiene más de 1200 archivos, sigue siendo FÁCILMENTE limitado por el procesador durante el tiempo de compilación (¡aunque un disco duro más rápido aún ayudaría a acelerar las cosas!).


VC 2005 no compila más de un archivo en el momento por proyecto, por lo que puede pasar a VC 2008 para usar sus dos núcleos de CPU, o dividir su solución en subproyectos de múltiples bibliotecas para obtener múltiples compilaciones.


Reduje a la mitad mi tiempo de compilación poniendo toda mi fuente en un disco RAM.

Probé con estos tipos http://www.superspeed.com/desktop/ramdisk.php , instalé un disco de 1GB y luego copié toda mi fuente en él. Si construye directamente desde la RAM, la sobrecarga de IO se reduce enormemente.

Para darte una idea de lo que estoy compilando, y sobre qué;

  • WinXP de 64 bits
  • 4 GB ram
  • 2.? Procesadores de doble núcleo GHz
  • 62 proyectos de C #
  • aproximadamente 250kloc.

Mi compilación fue de aproximadamente 135s a 65s.

Las desventajas son que sus archivos fuente viven en la memoria RAM, por lo que debe estar más atento al control de la fuente. Si su máquina perdiera potencia, perdería todos los cambios no versionados. Mitigada ligeramente por el hecho de que algunas unidades de memoria RAM se guardarán en el disco cuando apaga la máquina, pero aún así, perderá todo, desde su último pago o la última vez que se apagó.

Además, debe pagar por el software. Pero dado que estás desembolsando discos duros, quizás este no sea un gran problema.

Las ventajas son el aumento del tiempo de compilación, y el hecho de que las extensiones ya están viviendo en la memoria, por lo que el tiempo de inicio y el tiempo de depuración es un poco mejor. El beneficio real es el tiempo de compilación, sin embargo.