Back in February, I bought a copy of Parallels Desktop 2 and have been a very happy user of it since then. However, when Parallels 3 appeared, I hesitated to pre-order it (even at a very low price) and I did well: after it was released, I tried it on my MacBook Pro and their 3D support is useless for me. I could not play neither Half-Life 2 nor Doom 3 at acceptable speeds, being the former much worse than the latter in this regard.

Now, I'm evaluating VMware Fusion RC1, and I'm almost convinced to pre-order it. This product is very similar to Parallels and in fact several of its features seem "inspired" on it, such as Unity (Coherence in Parallels speak). But it has some important features that Parallels cannot currently match. To know: support for 64-bit guests, support for 2 virtual CPUs in guests and support to network-boot the virtual machine. All of these are cool from a development point of view. The first two allow one to run some more versions of specific operating systems, such as NetBSD/amd64, as well as enabling SMP support in them. The last one makes it easy to boot development kernels without modifying any virtual disk (haven't tried this yet, though).

All is not good though. Fusion is also supposed to have experimental 3D support inside the guest machines (up to DirectX 8.1). However, when trying to launch Half-Life 2 inside a Windows XP SP2 virtual machine, Windows crashed with a BSOD. At least I could launch it in Parallels, albeit it was simply unplayable. But as none of the two products make for a good gaming experience, I personally don't care about this feature.

Let's conclude with some numbers about the speed of each product. I installed Debian GNU/Linux leeny under Parallels and Fusion and built monotone-0.35 from scratch under them. The virtual machines were configured to have 768MB of RAM of a total of 2GB and the machine was idle aside from the build jobs. Obviously, in the case of Parallels I could only run the test with the i386 port, but in Fusion I used both the i386 and amd64 ports with 1 and 2 virtual CPUs. I also ran the same tests on the native machine using Mac OS X 10.4.10. The timings only include the make command, not ./configure.

Parallels, 32-bit, 1 virtual CPU, 'make':
real 17m33.048s, user 14m24.342s, sys 3m4.080s

Fusion, 32-bit, 1 virtual CPU, 'make':
real 16m35.507s, user 14m57.016s, sys 1m29.134s

Fusion, 32-bit, 2 virtual CPUs, 'make -j2':
real 10m0.341s, user 17m23.541s, sys 2m12.604s

Fusion, 64-bit, 2 virtual CPUs, 'make -j2':
real 10m24.617s, user 18m26.985s, sys 1m26.133s

Native, Mac OS X, 'make':
real 12m50.640s, user 11m12.997s, sys 1m20.344s

Native, Mac OS X, 'make -j2':
real 7m3.536s, user 11m22.875s, sys 1m26.366s

See this thread for other opinions.