[modifica n. 2] Se qualcuno di VMWare può trovarmi con una copia di VMWare Fusion, sarei più che felice di fare lo stesso di un confronto tra VirtualBox e VMWare. In qualche modo sospetto che l'hypervisor VMWare sarà meglio sintonizzato per l'hyperthreading (vedi anche la mia risposta)
Vedo qualcosa di curioso. Aumentando il numero di core sulla mia macchina virtuale Windows 7 x64, il tempo di compilazione complessivo aumenta invece di diminuire. La compilazione di solito è molto adatta per l'elaborazione parallela poiché nella parte centrale (mappatura post dipendenza) puoi semplicemente chiamare un'istanza del compilatore su ciascuno dei tuoi file .c / .cpp / .cs / qualunque per creare oggetti parziali da utilizzare per il linker al di sopra di. Quindi avrei immaginato che la compilazione sarebbe effettivamente in scala molto bene con # di core.
Ma quello che sto vedendo è:
- 8 core: 1.89 secondi
- 4 core: 1.33 secondi
- 2 core: 1,24 secondi
- 1 core: 1,15 sec
Si tratta semplicemente di un artefatto di progettazione a causa dell'implementazione di un hypervisor di un particolare fornitore (tipo2: virtualbox nel mio caso) o qualcosa di più pervasivo su più VM per rendere le implementazioni hypervisor più semplici? Con così tanti fattori, mi sembra di essere in grado di argomentare sia a favore che contro questo comportamento, quindi se qualcuno ne sapesse di più di me, sarei curioso di leggere la tua risposta.
Grazie Sid
[ modifica: commenti agli indirizzi ]
@MartinBeckett: le compilazioni a freddo sono state scartate.
@MonsterTruck: impossibile trovare un progetto opensource da compilare direttamente. Sarebbe bello ma non può rovinare il mio dev env adesso.
@Mr Lister, @philosodad: hanno 8 thread hw, usando VirtualBox, quindi dovrebbe essere mappatura 1: 1 senza emulazione
@Thorbjorn: ho 6,5 GB per la VM e un progetto VS2012 di dimensioni ridotte - è piuttosto improbabile che io stia invertendo / eliminando il file di paging.
@All: se qualcuno può puntare a un progetto VS2010 / VS2012 open source, questo potrebbe essere un riferimento comunitario migliore del mio progetto (proprietario) VS2012. Orchard e DNN sembrano aver bisogno di un tweak di ambiente da compilare in VS2012. Mi piacerebbe davvero vedere se anche qualcuno con VMWare Fusion lo vede (per la compartimentazione VMWare vs VirtualBox)
Dettagli del test:
- Hardware: Macbook Pro Retina
- CPU: Core i7 @ 2.3Ghz (quad core, hyper threaded = 8 core nel task manager di Windows)
- Memoria: 16 GB
- Disco: SSD da 256 GB
- Sistema operativo host: Mac OS X 10.8
- Tipo di macchina virtuale: VirtualBox 4.1.18 (hypervisor di tipo 2)
- Sistema operativo guest: Windows 7 x64 SP1
- Compilatore: VS2012 che compila una soluzione con 3 progetti C # Azure
- Misura tempi di compilazione tramite il plugin VS2012 chiamato "VSCommands"
- Tutti i test vengono eseguiti 5 volte, le prime 2 vengono eliminate, le ultime 3 medie