Linux与Windows 7(VM)C ++执行速度

我有一个简单的机器学习程序,我使用dlib在C ++中编写。 在我编写和testing过的机器上,运行Kali Linux的1.6 GHz Atom处理器的华硕Eee PC,通过cmake用g ++编译,在2分钟内从头到尾运行。 但是,在运行于2.3 GHz Core i7的Macbook Pro上的Windows 7 VM(在VMWare Fusion中),使用VS 2013编译的完全相同的代码需要2个小时才能运行。 我正在实现一种在代码中实现multithreading的方式,以利用我分配给虚拟机的4个vCPU,但仍然存在性能差异极大的问题,我还无法找出原因。 即使考虑到虚拟化的性能开销,我预计虚拟机的速度会更快……我觉得我可能会漏掉一些明显的东西。 我怎样才能让虚拟机的执行速度至less和Linux机器一致呢?

没有看到源代码和分析,很难说(如果不是不可能的话),有很多可能的原因。

1)虚拟机上的窗口以某种方式检测到它运行缓慢(因为虚拟机),所以为了保持响应,减少了代码的执行(理论上加速它的一种方式是添加一个循环,定期对用户输入进行采样,调度程序往往会给需要交互的进程提供更多的执行时间)

2)VS产生的调试/配置文件符号,如果我记得正确的,这是默认的,他们增加了一个巨大的开销(然后尝试构建版本)。

3)开销已经是正确的。 如果我没有记错,在我的机器上启动Eclipse需要10秒钟,但在VM(同一台PC)上需要3/4分钟(大约我认为它有类似的比例,为2分钟到几个小时)。

4)可能还有其他瓶颈(如带宽使用)

5)你不知道虚拟机在内部是如何工作的(但是你可以在两台机器上的不同情况下做基准测试,看看你在哪里发现异常)

6)好奇心存在虚拟机速度更快的情况(我记得somone注意到WinE上运行的代码比在Windows上跑得快,因为WinE使用的是更快的fmod实现)