[edit # 2] Se alguém do VMWare puder me encontrar com uma cópia do VMWare Fusion, ficarei feliz em fazer o mesmo que uma comparação entre VirtualBox e VMWare. De alguma forma, suspeito que o hipervisor VMWare será melhor ajustado para hyperthreading (veja minha resposta também)
Estou vendo algo curioso. À medida que aumenta o número de núcleos na máquina virtual Windows 7 x64, o tempo total de compilação aumenta em vez de diminuir. A compilação geralmente é muito adequada para processamento paralelo, pois na parte do meio (mapeamento pós-dependência), você pode simplesmente chamar uma instância do compilador em cada arquivo .c / .cpp / .cs / qualquer arquivo para criar objetos parciais para o vinculador sobre. Então, eu imaginaria que a compilação seria realmente muito bem dimensionada com o número de núcleos.
Mas o que estou vendo é:
- 8 núcleos: 1,89 seg
- 4 núcleos: 1,33 seg
- 2 núcleos: 1,24 seg
- 1 núcleo: 1,15 seg
Isso é simplesmente um artefato de design devido à implementação do hipervisor de um determinado fornecedor (type2: virtualbox no meu caso) ou algo mais difundido em mais VMs para tornar as implementações do hipervisor mais simples? Com tantos fatores, pareço ser capaz de argumentar a favor e contra esse comportamento - por isso, se alguém souber mais sobre isso do que eu, ficaria curioso para ler sua resposta.
Obrigado Sid
[ editar: endereçando comentários ]
@MartinBeckett: compilações a frio foram descartadas.
@MonsterTruck: Não foi possível encontrar um projeto de código aberto para compilar diretamente. Seria ótimo, mas não posso estragar meu env dev agora.
@ Sr. Lister, @ philosodad: Possui 8 threads de hw, usando o VirtualBox, portanto deve ser o mapeamento 1: 1 sem emulação
@Thorbjorn: Eu tenho 6,5 GB para a VM e um projeto pequeno do VS2012 - é bastante improvável que eu esteja trocando in / out a lixeira do arquivo de paginação.
@Todos: se alguém puder apontar para um projeto VS2010 / VS2012 de código aberto, isso pode ser uma referência de comunidade melhor do que o meu projeto VS2012 (proprietário). Orchard e DNN parecem precisar de ajustes no ambiente para compilar no VS2012. Eu realmente gostaria de ver se alguém com o VMWare Fusion também vê isso (para compartimentação VMWare vs VirtualBox)
Detalhes do teste:
- Equipamento: Macbook Pro Retina
- CPU: Core i7 a 2.3Ghz (quad core, hiperencadeado = 8 núcleos no gerenciador de tarefas do Windows)
- Memória: 16 GB
- Disco: SSD de 256 GB
- Sistema operacional host: Mac OS X 10.8
- Tipo de VM: VirtualBox 4.1.18 (hypervisor tipo 2)
- SO convidado: Windows 7 x64 SP1
- Compilador: VS2012 compilando uma solução com 3 projetos do Azure em C #
- Medida dos tempos de compilação pelo plug-in VS2012 chamado 'VSCommands'
- Todos os testes são executados 5 vezes, os 2 primeiros descartados, os 3 últimos em média