Developing .NET On A Mac – Performance and Productivity

November 11, 2008

I’ve had a number of questions about performance since I posted about ctrl+alt+insert and Resharper from VMWare Fusion.  Essentially, performance is totally acceptable.

I kind of have two parts to my answer – the speed of Windows when running within VMWare Fusion on a Mac, and also my overall productivity of having OS X as my main operating system.

As for the hardware, I have the slower hard drive (5400pm), 2.53gz Intel Core Duo processor and 4GB of RAM.  I’m running Windows XP on my virtual machine (not installed in Boot Camp).  So far I’ve had plenty of memory, and the processor remains pretty idle.  The slower hard drive is definitely the performance bottleneck, but really this is to be expected on any laptop, especially when it comes to compiling large projects.  I will most likely upgrade to a faster hard drive in a few months but it has certainly not caused any pain yet.

Opening a fresh copy of the Lucene.NET trunk source tree in Visual Studio, including initializing Resharper, takes 20 seconds.  Doing a full Rebuild on the solution takes 3 to 4 seconds.  How does that compare to what other people experience?  Considering how many big servers run on VMWare, I cannot imagine the performance degradation of VMWare is very high.

Frankly, I never feel like I am waiting for Visual Studio any more than I do at work, and the “Resharper break” at startup is not noticeably any longer than my other computing experiences.  Installing VMWare, Windows, Visual Studio, and Visual Studio SP1 took a whole afternoon, but I also spent that time busy learning how to use a Mac.

But aside from performance, I feel that I myself am a faster and better computer user in OS X.  I’m doing all of my normal computing (email, finances, blogging, office, music, etc.) on the Mac side, and only run the virtual machine for Visual Studio, Windows Explorer (Tortoise SVN) and Internet Explorer.  I’m almost always in the Unity view, which makes Windows apps appear in normal OS X windows and puts the Start menu up on the top OS X application menu.  VMWare has done a very nice job making the line between the two OS’es as seamless as possible.

As for stability, Windows XP doesn’t seem any more unstable when running as a virtual machine as it normally is.

OS X has not crashed or been crippled on me yet, even when under an extremely heavy load of multiple Firefox windows, Garage Band, VMWare + Windows + VS, Apple Xcode, iTunes, Open Office and Chat all running at the same time.  I’ve put it in sleep mode and back eight times or so, and I have manually rebooted it only once or twice so far.  I’m not sure that I have powered it off yet.  There is no way Windows XP would have lasted even five days under the same stress.

I hadn’t really used a Mac since high school when they were all pretty much black and white, so I had a very steep learning curve with the new operating system.  It’s different, especially with the keyboard and shortcuts.  After a month of use, I’ve come to really love OS X and cannot imagine switching back.

The trackpad gestures on the new Macbook (and Macbook Air) are a joy to use.  When I first bought my laptop, I assumed that I would go right out and buy a bluetooth keyboard and mouse.  But it turns out the trackpad is so powerful that I don’t really want a mouse at all anymore.

Setting up a shared wireless network with an Airport Express and Airport Extreme is super easy and the services are really stable — I have automatic external backups with Time Machine and my Airport Express is plugged into my 1960’s phonograph.  I stream the sound from iTunes and Pandora to my home stereo from anywhere in my house.  All of that was just a matter of running a configuration wizard and installing an app called Airfoil.

All in all, I think I am more productive with my current setup than I ever was just running Windows.  The built-in Spaces and Exposé features are awesome.  When Windows is rebooting, I switch spaces and read some blogs or catch up on email and whatnot.

There’s also just something special about being able to run software written for Windows, Linux, and OS X all at once on the same machine.  It really lets you get out and expand your horizons as a programmer and a geek.

For example, one of the biggest unexpected pleasures so far has been discovering how amazing the OS X Cocoa development platform is.  The frameworks are complete with a nice API’s and their patterns enforce an MVC architecture.  The drag-n-drop UI designer rocks and the generated “codebehind” type classes are much closer to what I consider to be sane code than what VS.NET generates for WinForms.  They also have a built-in profiler that is one the nicest I have used.

After exploring the Cocoa framework, it became very clear to me how Apple has developed so many impressive and stable products in such a short amount of time – the iPod, a whole new OS, the iPhone, and the iPod Touch are all relatively young products and all of them have been ground-breaking.  I don’t know who their technology and patterns evangelists are, but I’ll wager that they’re sharp, vocal, and have apparently done a great job selling people early-on about how to create frameworks with lower technical friction.

So to conclude, yes, Visual Studio is probably a little slower here in Alt.NET Mac-land, but I’m not convinced it has anything to do with OS X or VMWare — I am running on a 5200 laptop drive, after all and it’s only highly disk-intensive operations (like installing VS.NET) that seem slower than I am used to.  But any performance loss is easily overturned by the other productivity gains I’m seeing by using OS X.

I hope this stuff helps people in making their decision.  I am very willing to talk with anyone via email or phone if they have questions.  I was pretty unsure about the whole thing myself, and the decision took about six months to process before I went ahead and jumped off the cliff.  So far, I have no regrets.  It’s embarrassing to admit, but I have totally become a Mac fanboy.