我在VMware的Win7系统里安装了MDK4和MDK5,用于编译程序。把MDK安装在虚拟机里面有两个原因:第一,虚拟机里面的系统是禁止联网的,因此可以防止盗版软件的检测;第二,安装在虚拟机里面,我重装电脑的系统,不需要再重新安装这些软件。
但是在虚拟机里面编译的时候,明显感觉到比直接在电脑上编译要慢。以前电脑配置不高,也没太计较这个问题。但是去年换了i7-12700 CPU之后,对这个问题越来越注意了。我把虚拟机里面的系统分配了16核CPU,8G内存,性能相当于主机CPU 80%的性能,但是编译速度还没有直接在笔记本里面编译速度快。
通过测试发现,是磁盘的IO影响了在虚拟机的编译速度。我在创建虚拟机指定硬盘容量的那一步,勾选了“立即分配所有磁盘空间”,这对磁盘IO的速度有很大的提升;在虚拟机属性,硬盘高级属性里面,把硬盘模式设置为独立,也对磁盘IO有提升。
另外关于内存和CPU配置,我发现配置为4G内存8个内核,比8G内存20个内核的编译速度还要快。
以下为测试MDK编译时间。说明:MDK4是单线程编译,MDK5支持多线程编译。主机为Win11系统,虚拟机系统为Win7系统
编译时间测试记录如下:
主机编译MDK4工程,耗时8秒;编译MDK5工程耗时1秒
虚拟机编译MDK4工程,耗时18秒;编译MDK5工程耗时6秒
虚拟机优化硬盘IO后编译MDK4工程,耗时11秒;编译MDK5工程耗时2秒
共享文件夹编译测试
虚拟机Win7直接编译MDK4工程,耗时11秒;虚拟机编译主机共享MDK4工程,耗时18秒;虚拟机编译NAS共享文件夹映射为网络驱动里面的MDK4工程耗时23秒。
主机编译本地MDK4工程,耗时8秒;主机编译NAS共享文件夹映射为网络驱动里面的MDK4工程耗时15秒;主机编译NAS共享文件夹MDK5工程,耗时6秒。
补充Hyper-V编译时间
Hyper-V虚拟机Win7编译MDK4工程,耗时8秒;编译主机共享文件夹的MDK4工程,耗时10秒;编译NAS共享文件夹的MDK4工程,耗时15秒。
Hyper-V虚拟机Win7编译MDK5工程,耗时1秒;编译主机共享文件夹的MDK5工程,耗时2秒;编译NAS共享文件夹的MDK5工程,耗时3秒。
Hyper-V虚拟机的使用体验比VMware虚拟机的使用体验要好很多。WMware虚拟机能明显感觉到性能的下降,这可能是磁盘IO降低引起的;但是Hyper-V虚拟机使用完全感觉不到性能的降低。Hyper-V真正的对比对象应该是EXSI,但是ESXI文件管理不如Windows方便。
Hyper-V虚拟机满足了我对虚拟机系统的要求。