[edit # 2] Se qualcuno di VMWare può farmi visita 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à ottimizzato per l'hyperthreading (vedi anche la mia risposta)
Vedo qualcosa di curioso. Aumentando il numero di core sulla mia macchina virtuale x64 di Windows 7, 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 che il linker deve prendere al di sopra di. Quindi avrei immaginato che la compilazione si sarebbe effettivamente ridimensionata molto bene con # di core.
Ma quello che vedo è:
- 8 core: 1,89 sec
- 4 core: 1,33 sec
- 2 core: 1,24 sec
- 1 nucleo: 1,15 sec
È semplicemente un artefatto di progettazione dovuto all'implementazione dell'hypervisor di un particolare fornitore (tipo 2: virtualbox nel mio caso) o qualcosa di più pervasivo su più macchine virtuali per rendere più semplici le implementazioni dell'hypervisor? Con così tanti fattori, mi sembra di poter argomentare sia a favore che contro questo comportamento, quindi se qualcuno ne sa più di me, sarei curioso di leggere la tua risposta.
Grazie Sid
[ modifica: indirizzare i commenti ]
@MartinBeckett: le compilazioni a freddo sono state scartate.
@MonsterTruck: Impossibile trovare un progetto opensource da compilare direttamente. Sarebbe fantastico, ma non posso rovinare il mio dev env in questo momento.
@Mr Lister, @philosodad: hanno thread da 8 hw, usando VirtualBox, quindi dovrebbe essere il mapping 1: 1 senza emulazione
@Thorbjorn: Ho 6,5 GB per la VM e un progetto VS2012 di piccole dimensioni - è abbastanza improbabile che sto scambiando dentro / fuori il cestino del file di paging.
@Tutti: se qualcuno può indicare un progetto VS2010 / VS2012 open source, potrebbe essere un riferimento di comunità migliore rispetto al mio progetto VS2012 (proprietario). Orchard e DNN sembrano aver bisogno di modifiche ambientali per compilare in VS2012. Vorrei davvero vedere se anche qualcuno con VMWare Fusion lo vede (per 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
- Tempi di compilazione misurati dal plug-in VS2012 chiamato 'VSCommands'
- Tutti i test vengono eseguiti 5 volte, le prime 2 vengono scartate, le ultime 3 sono in media