[edit#2]如果来自VMWare的任何人都可以使用VMWare Fusion的副本来打我,我很乐意做与VirtualBox与VMWare比较的相同操作。我以某种方式怀疑VMWare虚拟机管理程序将针对超线程进行更好的调整(也请参见我的答案)
我看到一些奇怪的东西。随着我在Windows 7 x64虚拟机上增加内核数量,总体编译时间会增加而不是减少。编译通常非常适合并行处理,因为在中间部分(后依赖映射)中,您可以简单地在每个.c / .cpp / .cs /任何文件上调用一个编译器实例,以建立供链接器使用的部分对象过度。所以我以为编译实际上可以很好地扩展内核数。
但是我看到的是:
- 8核:1.89秒
- 4核心:1.33秒
- 2核心:1.24秒
- 1核心:1.15秒
这仅仅是由于特定供应商的虚拟机管理程序实现(在我的情况下为type2:virtualbox)导致的设计工件,还是在更多的VM上更普遍地使虚拟机管理程序实现更简单?有这么多因素,我似乎能够为这种行为辩护和反对-因此,如果有人比我更了解这一点,我很想读您的答案。
谢谢席德
[ 编辑:解决评论 ]
@MartinBeckett:冷编译被丢弃了。
@MonsterTruck:找不到直接编译的开源项目。太棒了,但现在不能搞定我的开发环境。
@Mr Lister,@philosodad:使用VirtualBox时有8个硬件线程,因此应该以1:1映射而不进行仿真
@Thorbjorn:我有6.5GB的虚拟机和一个较小的VS2012项目-我换入/换出垃圾页面文件的可能性很小。
@All:如果有人可以指向一个开源VS2010 / VS2012项目,那么这可能比我(专有)VS2012项目更好的社区参考。Orchard和DNN似乎需要调整环境才能在VS2012中进行编译。我真的很想看看使用VMWare Fusion的人是否也看到了这一点(针对VMWare与VirtualBox划分)
测试细节:
- 硬件:Macbook Pro Retina
- CPU:Core i7 @ 2.3Ghz(四核,超线程= Windows任务管理器中的8核)
- 记忆体:16 GB
- 磁盘:256GB SSD
- 主机操作系统:Mac OS X 10.8
- VM类型:VirtualBox 4.1.18(类型2虚拟机管理程序)
- 来宾操作系统:Windows 7 x64 SP1
- 编译器:VS2012用3个C#Azure项目编译解决方案
- VS2012插件通过“ VSCommands”来衡量编译时间
- 所有测试运行5次,丢弃前2次,平均后3次