|
发表于 2005-7-16 01:40:03
|
显示全部楼层
Post by jhuangjiahua
mrkissinger :
未必
看你的是什么虚拟机
如果是像 bochs 之类的那样模拟 CPU , 那确实会非常慢 , bochs 相当实际机器的 1/500
可是像 vm , qemu 之类的并不是模拟 cpu , 速度是不会太慢的
一般认为 qemu 速度是实际机器的 1/4
使用 kqemu 加速后要快好多
vm 的速度更要快
所以经管你可能不愿意相信
可是wine 下的程序速度确实未必比 vm 快
AutoCAD 可能不是很多人用
但是在wine 跑过 IE 的大概都知道 wine 下的 IE 是非常慢的
vm 里的 就几乎和实际机器上真实的 win2K 上差不多
另外 , vm 里的 Win2K 也确实比 Win98 快很多
jhuangjiahua,我先声明,我不是跟你论战,而是确实觉得这个话题比较有意思,而且我们的讨论可能会给很多朋友带来借鉴的意义。为避免讨论中可能出现的磨擦,这里先行提议大家就事论事。
我最早用的是qemu+kqemu(都是CVS获得后自己编译的,用惯了Linux,盗版有点不好意思),跑Linux和FreeBSD的时候没有仔细的比较(官方网站说比真实环境慢1-2倍)。
但是qemu确实有一个问题,那就是他完全虚拟了一个SVGA。这个在非x86平台上是个提高移植性的优点,但是对于x86平台,就显得浪费了──已经有显卡了,何苦不用?显卡的显示芯片是DSP芯片,比通用CPU的性能高数倍,模拟当然要慢很多。
VMware支持通过专用vmware tool来使用真实的显卡(准确的说是调用host的显示驱动),所以显示速度有一定的提升。
但是,即使是这样,vmware tool是作为windows的驱动来运行的,win32 kernel在中间参合了一把,做了无用功,性能当然下降。具体表现就是鼠标反应速度不尽人意,屏幕处理速度较缓慢。根据vmware的说明,关闭了所有不需要的服务和windows的视觉效果,并进行全屏,还是不行(可能我的屏幕稍微大一点,1280x1024)。
事实上,由于win32 kernel永远需要有各种在运行的服务(起码有个时钟中断响应什么的),vm在执行机器指令的时候是要不断被打断的,而且是软件级别的打断。而wine的执行过程中,不存在win32 kernel的打断和额外资源占用,性能必然要高。
qemu/bochs/vmware/virtual pc这些模拟硬件的软件都比较成熟了,而wine可能永远只能是Alpha版,因为硬件系统本来就比windows简单得多。如果vm方法真的可以有这么好的效果,wine项目根本不会开始。wine=Wine Is Not Emulator,wine的创始人非常清楚有emulator可以完成同样的任务,而且不存在软件兼容问题,但是如果不通过API级的模拟,性能永远会落后native运行很多。
vm方式下你不仅在运行应用程序,还同时在运行OS,而wine仅仅是运行应用程序,结论应该是显而易见的。
我使用的平台:
Celeron 2.0G/1G DDR/nVidia GeForce4 MX 440
Debian experimental+2.6.11.6自编译内核(单内核方式)
vmware 5.0
qemu 0.7.0cvs+kqemu 0.6.2
wine 20050520cvs
比较过的软件有:
Visual C++ 6.0
Keil C 7.5
NSIS
金山词霸
protel 99se |
|