我有一个简单的机器学习程序,我用Cl ++用dlib编写。在我编写和测试的机器上,一台运行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个小时才能运行。我正在开发一种在代码中实现多线程的方法,以利用我分配给VM的4个vCPU,但性能上的差异仍然是极端的,我还无法弄清楚原因。即使考虑到虚拟化的性能开销,我也希望VM更快......我觉得我可能会遗漏一些明显的东西。如何让VM中的执行速度至少与Linux机器相媲美?
答案 0 :(得分:3)
没有看到源代码和分析很难说(如果不是不可能的话),有很多可能的原因。
1)VM上的窗口以某种方式检测到它运行缓慢(因为VM)所以为了保持响应,它减少了代码的执行(理论上加快它的方法是添加一个定期采样用户输入的循环,调度程序倾向于为需要交互的进程提供更多的执行时间)2)VS产生了调试/配置文件符号,如果我记得这是默认的,那么它们会增加很大的开销(然后尝试构建版本)。
3)开销已经正确。如果我记得在我的机器上正确启动Eclipse需要花费10秒钟,但在VM(相同的PC)上花费3/4分钟(大约我认为它具有相似的比例,持续2分钟到几个小时。)
4)可能存在其他瓶颈(如带宽使用)
5)你不知道VM在内部是如何工作的(但你可以在两台机器上为各种情况做基准测试,看看你在哪里发现异常)
6)好奇心存在VM更快的情况(我记得有人告诉过,在WinE上运行的代码比在Windows上运行得快,因为WinE使用的是更快的fmod实现)