Being an electrical engineer who also writes all different kinds of software whose main machine is a Mac, I make pretty extensive use of virtual machines. I regularly have at least a couple of go-to Ubuntu VMs for testing, and carry around at least one Windows 10 VM to run Altium Designer. In my experience, VirtualBox is useful for handling easily-portable, low-performance VMs, especially linux, where either VMWare Fusion or Parallels is necessary for heavy lifting and extended GUI interaction. Those two tend to leapfrog each other every release or couple, so I try to keep up to speed with their relative advantages.
So, how do they compare right now (August 9, 2018)? I fired up a macOS High Sierra and a Windows 10 guest in each to compare. Here are my notes.
Generally speaking, Parallels seems to be higher performance, but a bit buggier compared to VMWare Fusion. For one, the user experience of the guest is very, very good – near-native for most things you might be doing, like using web browsers, native apps that aren’t graphics intensive, and so on. In the Win10 guest, the start menu opens so fast and fluidly that there’s no indication you’re in a VM at all, and most UI interactions are like that.
The fit and finish seems to be a fair bit better, too. Especially during the process of installing Windows, everything was very fluid. Parallels prompted me for a username and password for Windows, as well as some other up-front info that made the installer experience move a little faster, which is nice since the graphics and UI interaction are kind of bad until the OS boots and the VM tools get installed (as with most VM hypervisors). And before ever showing me the guest, Parallels auto-installed the VM tools package, so when I did finally see a desktop, it was pretty and crisp and full-screen, with no additional steps required.
I was a little annoyed that Parallels’ super-duper-integration-share-everything modes are enabled by default with Windows guests. The Desktop folder is the same as the host’s desktop, which sort of just means both are constantly disorganized and devoid of context (I don’t need PCB files that open only in Windows on my Mac native desktop). But all of that can be disabled, so it’s not a huge deal.
There are some notable bugs I ran into though, many of which I didn’t in Fusion:
- The macOS VM went to sleep, and failed to resume – it’d spin for a few seconds then jump right back to the “asleep” screen. It required a restart with the Parallels menu, losing some open work. To prevent it happening again, I went into Energy Saver in the guest and disabled sleep, which was rather unintuitive (there’s a VM setting for Windows guests, but the guest is in control in the case of macOS).
- My whole aim in making a macOS guest was to test some weirdness with VS Code, an electron app. It turns out, electron apps don’t like Parallels graphics. You have to run them with “–args –disable-gpu”, which is somewhere between a minor annoyance and a huge PITA depending on your workflow.
- At one point, my macOS guest did this annoying thing where I click-dragged a window and couldn’t stop. The window was stuck to my mouse, and I couldn’t use it for anything else inside the VM. To avoid losing work, I was able to “suspend” then resume the VM, which ended the rogue click event.
With my initial macOS guests, I couldn’t tell much of a difference between the two hypervisors after quite a few minutes of using them. The Geekbench run was sort of the first indication that my slight preference for Parallels was justified, so Fusion was on pretty equal footing.
It was really the Windows 10 install experience where Fusion started earning my ire. For one, there were no shortcuts. Getting into the installer was comparably easy (drag/drop an ISO, accept VM defaults, go), but once in it, there were a lot more windows set up screens to answer with Fusion. I seemed to notice that the install took a bit longer, as well. And then at the end, for whatever reason, the VMWare tools weren’t yet installed in the guest. I’m not sure if they were supposed to have installed automatically or not, but I found the process of doing it manually to be a bit tedious as well. You have to find the “Install VMWare tools” menu item, then without prompting, go find the CD that shows up in the guest and manually run the installer. The process is only intuitive if you’ve already done this a million times in VirtualBox. And to top it off, the installation then required a guest restart.
After that was out of the way, the Windows guest experience leaves a lot to be desired compared to Parallels. Most of the UI is comparably responsive, but a lot of Windows animations and the start menu in particular are choppy and really make it obvious you’re in a VM, even if they’re not a huge slowdown. And Fusion wasn’t completely without bugs – in the macOS guest, electron rendering again wasn’t perfect. In Parallels, this was a showstopper, with things completely failing to render or being partially obscured, until the –disable-gpu workaround. In Fusion, everything rendered correctly and usably, but flashed annoyingly while interacting with it. And to make matters almost worse than Parallels, the –disable-gpu workaround didn’t have any impact on the Fusion guest.
Finally, while the UIs were generally pretty comparable, the slight slowdown I felt in Fusion was very much reflected in the benchmarks I made.
For raw performance, I did some benchmarks inside the guests, which may or may not be scientifically valid. Geekbench inside the macOS guests showed a minor single-core advantage for Parallels, and a slightly less-minor multi-core advantage (both guests, Parallels and Fusion, were configured for 2 cores and 8GB of RAM). Nothing hugely different for the macOS guests. Windows was a bit bigger of a contrast. I ran Novabench on both Windows guests (also both 2 cores/8GB), two runs each:
- Novabench overall: 1205/1312
- GFX subscore: 355/363
- Novabench overall: 887/1087
- GFX: 0/155
I only broke out the Graphics subscore because all of the others (disk and memory R/W speed) seemed generally within the error margin of each other.
Notably, I ran the tests twice because the first run failed on graphics inside the Fusion VM. Which is just as well, since the variability seems pretty high – sort of to be expected inside VMs (oh, and both were loaded at the same time, though not being tested at the same time). But Parallels seems pretty solidly the hands-down winner on the Windows guest benchmark, it’s the less hands-down winner on the macOS guest benchmark, and seems subjectively more responsive and faster, so I’d call that a result. And while you should never expect to play video games in a VM, the graphics performance of Fusion was abysmal vs Parallels. Last time I compared these two, Altium Designer proved to be completely unusable in a Fusion guest, with graphics performance viewing PCB layout being the pain point – it certainly looks like that trend continues.
Let me know what your own experiences are!