[editar # 2] Si alguien de VMWare me puede dar una copia de VMWare Fusion, estaría más que feliz de hacer lo mismo que una comparación de VirtualBox vs VMWare. De alguna manera sospecho que el hipervisor VMWare estará mejor ajustado para hyperthreading (vea mi respuesta también)
Estoy viendo algo curioso. A medida que aumento el número de núcleos en mi máquina virtual Windows 7 x64, el tiempo de compilación general aumenta en lugar de disminuir. La compilación suele ser muy adecuada para el procesamiento paralelo, ya que en la parte media (mapeo posterior a la dependencia) simplemente puede llamar a una instancia del compilador en cada uno de sus archivos .c / .cpp / .cs / cualquiera que sea para construir objetos parciales para que el enlazador los tome terminado. Así que me habría imaginado que la compilación en realidad se escalaría muy bien con # de núcleos.
Pero lo que estoy viendo es:
- 8 núcleos: 1.89 segundos
- 4 núcleos: 1,33 segundos
- 2 núcleos: 1,24 segundos
- 1 núcleo: 1,15 segundos
¿Es esto simplemente un artefacto de diseño debido a la implementación de un hipervisor de un proveedor en particular (tipo 2: virtualbox en mi caso) o algo más generalizado en más máquinas virtuales para simplificar las implementaciones de hipervisor? Con tantos factores, parece que soy capaz de argumentar a favor y en contra de este comportamiento, por lo que si alguien sabe más sobre esto que yo, me gustaría leer tu respuesta.
Gracias Sid
[ editar: abordar comentarios ]
@ MartinBeckett: las compilaciones en frío se descartaron.
@MonsterTruck: No se pudo encontrar un proyecto de código abierto para compilar directamente. Sería genial, pero no puedo arruinar mi env dev en este momento.
@ Mr Lister, @philosodad: tenga 8 hw hilos, usando VirtualBox, por lo que debería ser una asignación 1: 1 sin emulación
@Thorbjorn: Tengo 6.5GB para la VM y un proyecto VS2012 pequeño; es bastante improbable que esté intercambiando el archivo de la página.
@ Todos: si alguien puede apuntar a un proyecto VS2010 / VS2012 de código abierto, esa podría ser una mejor referencia comunitaria que mi proyecto VS2012 (propietario). Orchard y DNN parecen necesitar ajustes de entorno para compilar en VS2012. Realmente me gustaría ver si alguien con VMWare Fusion también ve esto (para la compartimentación de VMWare vs VirtualBox)
Detalles de la prueba:
- Hardware: Macbook Pro Retina
- CPU: Core i7 @ 2.3Ghz (quad core, hyper thread = 8 núcleos en el administrador de tareas de Windows)
- Memoria: 16 GB.
- Disco: SSD de 256 GB
- SO host: Mac OS X 10.8
- Tipo de VM: VirtualBox 4.1.18 (hipervisor tipo 2)
- SO invitado: Windows 7 x64 SP1
- Compilador: VS2012 compilando una solución con 3 proyectos C # Azure
- Los tiempos de compilación se miden con el complemento VS2012 llamado 'VSCommands'
- Todas las pruebas se ejecutan 5 veces, se descartan las 2 primeras ejecuciones, se promedian las últimas 3