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

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

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

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

1) windows 在 VM 上以某种方式检测到它 运行 慢(因为 VM)所以为了保持响应它会减少代码的执行(一种加速它的方法理论上是添加一个周期性地对用户输入进行采样的循环,调度程序倾向于为需要交互的进程提供更多的执行时间)

2) VS 生成了 debug/profile 个符号,如果我没记错的话那是默认值,它们会增加巨大的开销(然后尝试构建版本)。

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

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

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

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