3
为什么虚拟机上的更多CPU内核会降低编译时间?
[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 …