Lately, I've drastically reduced the number of computers I own. There are a number of practical motivations. Every machine requires a certain amount of my personal resources (time and money). One machine doesn't require much, but when you have around 10, it's no longer trivial. Each additional machine means more electricity, more failures, more floor/rack space, more software upgrades, cabling, UPSs, blah blah blah. Sure it's fun to have a big "empire", but it requires resources. It's silly to unnecessarily sink personal unpaid time into tinkering with hardware and updating software; I'm better off learning a new skill that I'll get years of use out of, like another programming platform. Also, we moved 2000 miles to California, and fewer computers meant lower moving expenses. I also realized that my personal projects, such as this site, have only modest requirements and could therefore be hosted at little cost on VPS hosts, and making it easier to move into an apartment in California, and hopefully move again soon into a house. So I reduced my empire to a humble size, just two VPSs and three machines: my MacBook Pro, my FreeBSD workstation, and my Windows test sandbox. Now the Windows machine's motherboard is flaking out on me; it has to "warm up" before it'll POST. For as little as I use this Windows thing I'd hate to waste any money on it, and it sure would be nice to replace it with a VM, which brings us to today's topic.
I tried out a few VM packages. It takes a long time to evaluate a VM package, since you have to install Windows (a tedious hour by itself), then actually try to do a few things, so I'll pass on what I found here. I didn't try VMware; I simply found something I like before I got to it on my list. I tried Q, Parallels, and VirtualBox on MacOS, and here's what I found.
Q, a wrapper for QEMU isn't worth the download. It's easy enough to use, and has a nice "raw" feel that gives me confidence that what I'm experiencing is a close approximation to what a typical Windows user would experience. However, it is slow, even on my MacBook Pro with a Core 2 Duo. It's so slow I can't get any work done; by the time my program finishes loading, I've totally forgotten what I was testing, and my mind has long since wondered off pondering how I could mount solar panels on my motorhome with rigging to mount panels double or triple the width of the motorhome and fold them up for traveling and how much it would cost. Trying to read a DVD only resulted in errors.
Parallels has some pretty sweet features. It's the only one of the three I tested that could actually read DVDs. It takes even longer than QEMU to install Windows because it has to make massive changes to install its communication hooks for all its features, but once installed it runs very fast. However, I was able to port in the disk images from QEMU by using "qemu-img convert" to export an image format that Parallels can import. I like Parallels, but didn't feel like it fit my task. It has lots of bells and whistles I don't care about. If I wanted to actually integrate some Windows software into my Mac's environment for the purposes of "real" usage, it'd be great, but actually I want to test my software in as plain an environment as possible, and I don't want some tweak for Parallels changing how things work. It also costs money to use it after the 14th day, and $80 seemed a bit steep for my purposes.
VirtualBox was my final choice. Reading DVDs seemed to work, but had bizarre problems. Otherwise, it worked well. It's as fast as Parallels, both of which clearly make good use of hardware virtualization. Nothing crashed. It doesn't need to install any special drivers or modify Windows in any way; it just emulates hardware for which Windows XP bundled drivers.
Here are some concluding thoughts and observations. I didn't try 3D acceleration; it just isn't a tool that would help my tasks. I suspect Parallels would perform better for 3D acceleration since they seemed to make a big deal out of it. For network access, both Parallels and VirtualBox support both NAT with an emulated internal network and bridging a fake MAC address; a nice option to change depending on whether I'm on my home network. When bridging, both let me directly browse my Samba server on my separate FreeBSD machine, which I would expect, but SMB is so flakey it's worth mentioning. (I didn't test Q much, having quickly passed it up because of its abysmal speed.) I couldn't load the disk images from QEMU using VirtualBox; it wedged on boot, even with Safe Mode. A friend suggested I could try making a new hardware profile by booting back in QEMU, but I didn't monkey with it. I found one important caveat with VirtualBox. You can't just make a copy of a disk image and import it as a new VM. VirtualBox will throw some error about a clashing UUID. Apparently, each disk image has an embedded ID that must be unique. To work around this, use the command-line tool "VBoxManage clonehd", which is bundled with VirtualBox.
Having found these tools, I happily stuffed my old Windows machine in a dumpster.