Linux与Windows7(VM)C++的执行速度

Linux vs. Windows 7 (VM) C++ Execution Speed

本文关键字:C++ 执行 速度 VM Windows7 Linux      更新时间:2023-10-16

我用dlib用C++编写了一个简单的机器学习程序。在我编写和测试它的机器上,一台ASUS Eee PC,带有1.6 GHz Atom处理器,运行Kali Linux,并通过cmake使用g++进行编译,它在2分钟内从开始到结束运行。然而,在搭载2.3 GHz Core i7的Macbook Pro上运行的Windows 7虚拟机(VMWare Fusion)中,使用VS 2013编译的完全相同的代码需要2小时才能运行。我正在研究一种在代码中实现多线程的方法,以利用我分配给VM的4个vCPU,但性能差异仍然很大,我还没能找出原因。即使考虑到虚拟化的性能开销,我也希望虚拟机更快。。。我觉得我可能错过了一些显而易见的东西。如何使虚拟机中的执行速度至少与Linux机器不相上下?

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

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

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

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

4) 可能存在其他瓶颈(如带宽使用)

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

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