我用dlib用C++编写了一个简单的机器学习程序。在我编写和测试的机器上,一台带有1.6个GHz Atom处理器的ASUS运行Kali,并通过cmake与g++一起编译,它在2分钟内从头到尾运行。然而,在运行在带有2.3 GHz核心i7的Macbook Pro上的Windows7VM(在Windows7VM中)中,与VS 2013编译的代码完全相同,运行时间为2个小时。我正在研究一种在代码中实现多线程的方法,以利用我分配给VM的4个vCPU,但是性能上的差异是极端的,我还无法找出原因。即使考虑到虚拟化的性能开销,我也希望VM更快.我觉得我可能漏掉了一些明显的东西。如何使VM中的执行速度至少与Linux机器持平?
发布于 2015-06-30 16:06:55
如果没有看到源代码和分析,很难说(如果不是不可能的话),有许多可能的原因。
1) VM检测上的窗口在某种程度上运行缓慢(因为有VM),因此为了保持响应,它减少了代码的执行(理论上加快它的一种方法是添加一个循环,定期采样用户输入,调度程序倾向于给需要交互的进程提供更多的执行时间)
2) VS生成了调试/配置文件符号,如果我记得正确的话,这是默认的,并且会增加巨大的开销(然后尝试构建版本)。
3)间接费用已经正确。如果我还记得在我的机器上正确启动Eclipse需要大约10秒,但是在VM (相同的PC)上需要3/4分钟(大约我认为它在2分钟到几个小时之间有相似的比率)。
4)可能还有其他瓶颈(如带带使用)
5)您不知道VM在内部究竟是如何工作的(但您可以在这两台机器上为各种情况进行基准测试,并查看在哪里发现异常)
6)好奇存在VM更快的情况(我记得有人注意到,WinE上运行的代码比在Windows上运行的要快,因为WinE使用的是更快的fmod实现)
https://stackoverflow.com/questions/31142969
复制相似问题