64-bit software has been in the news a bit more lately as the number of people using a 64-bit version of Windows has been increasing. Windows 7 has seen a 46% install rate of the 64-bit version compared to only 11% under Vista (and less on Windows XP). As a result, many people have been wondering how 64-bit software fits into the concept of portable software. We've had a few discussions in the forums amongst the development staff and users and come to what we think are the right conclusions. And, since we just released our first hybrid 32-bit/64-bit app that didn't necessarily need to be (see: 7-Zip Portable), I thought it would make sense to get our conclusions all down in one place for those that are interested.
Wait, what *is* 64-bit software?
If you know the answer, feel free to skip ahead. If you're confused, don't worry, most people don't know what it is either. When people say something is 32-bit or 64-bit, they're referring to the smallest unit of information that can be processed on a machine (the bit, a 1 or a 0) and how many are dealt with at the same time within the PC and operating system. Basically, how software is working with data internally. A compiled piece of software is written to work with one or the other, but not both. And there are PCs out there that are either 32-bit or 64-bit and have either 32-bit or 64-bit Windows on them. (f you're curious what you have, just right-click on Computer in your Start Menu and click Properties (in Windows Vista or 7). Look for the System Type line.
Most software, however, is 32-bit. Why? Because 64-bit versions of Windows have a feature called Windows 32-bit on Windows 64-bit (WOW64) that allows them to run 32-bit versions of software in addition to 64-bit software. 32-bit versions of Windows, on the other hand, can't run 64-bit versions of software, even if the CPU in the PC is a 64-bit CPU. So, because of this, most popular software like Firefox, Pidgin, OpenOffice.org, Microsoft Office and others are distributed only as 32-bit versions for Windows.
64-Bit Portable Software: The Pros and the Cons
Like anything, 64-bit software has its pros and its cons. With portable software needing to move from PC to PC, these become a bit more pronounced. Keep in mind that we're not talking about 32-bit vs 64-bit OSes (64-bit pros like larger system memory and No eXecute bits don't really apply here) and that we're mainly concerned with the apps that most folks use. Let's run through them:
Pros of 64-bit Portable Apps
- Performance Increase - A few 64-bit applications that have been compiled to take advantage of 64-bit integers and the additional registers available will yield a performance increase. This performance increase is most pronounced in CPU-limited apps like CAD, audio and video encoding, compression, etc. Note that most software will see no noticeable increase in performance.
Cons of 64-bit Portable Apps
- Compatibility Issues - As mentioned above, 64-bit software can only run on a 64-bit OS running on a PC with a 64-bit CPU. A 32-bit version of Windows can not run 64-bit software, even if the CPU is 64-bit-capable. That means that if a given portable app is just the 64-bit version, it won't work on most PCs you encounter as the vast majority of PCs are running 32-bit Windows. Nearly all 32-bit applications will run just fine on a 64-bit OS, though.
- Larger Install Size - If you include both the 32-bit and 64-bit versions of a given app in the portable package, you wind up doubling the install-size of an app. This is an issue due to the fact that many people run portable software on their USB flash drives, so space may be at a premium.
- Larger Memory Footprint - 64-bit software will take up more RAM than its 32-bit equivalent due to the way information is stored.
- Plugin Issues - If an app is 64-bit, then any plugins it uses must also be 64-bit. This not only makes software more complicated for users, but you'll often find that a given plugin simply isn't available in a 64-bit variety.
The cons would seem to far outweigh the pros, so the answer should be simple: stick to 32-bit apps. There are always exceptions to the rule, though.
Exception 1: Some Apps Require The 64-bit Version on 64-bit Windows
Some software - particularly system tools - requires that the 32-bit version for 32-bit Windows and the 64-bit for 64-bit. A perfect example of this is JkDefrag Portable. This defrag software interfaces with the OS in a specific way and has separate builds for 32-bit and 64-bit Windows. Rather than having users need to worry about which version is which as they move PCs, we custom built a GUI and launcher that automatically launch the appropriate version for the current PC. That way, the user uses it just like any other app and, as we try to do with everything, it just works.
Exception 2: Some Apps Get A Good Performance Increase Without Becoming Huge
Some software does get a tangible speed improvement as a 64-bit app while at the same time not winding up with an excessively large install size. The perfect example of this is the newly-updated 7-Zip Portable release. This new release incorporates both the 32-bit and 64-bit versions of 7-Zip in a single package and automatically launches the appropriate one, just like with JkDefrag. Since 7-Zip uses the same localization files for both versions, we're able to keep just one copy. So, we end up with an app with all the functionality we want, but still clocks in at about 5mb installed. 7-Zip can see a 5% or even up to 10% performance boost when running the 64-bit version vs the 32-bit version. And working to compress large files is often measured in minutes, not seconds, so, the extra work on our end and couple extra MBs on the user's end makes sense as it can save users time in the long run.
The Best Approach For The Future
So, what's the best answer for portable app users? After much discussion, we've decided that, as a general rule, doing 32-bit-only portable software is the best approach for nearly all apps and nearly all users. They have low overhead, and they just work on every PC you come across everywhere you go.
When we encounter the rare exception like JkDefrag (which requires both versions) or 7-Zip (which benefits from both versions without a big install-size hit), we'll do one of our special hybrid versions so that the right version runs on the right PC. Apps like JkDefrag which normally require different versions will be one version that just works everywhere. And apps like 7-Zip will work everywhere and give you a little performance boost when you happen to be on 64-bit Windows. And it all just works with a single packaged portable app. The user doesn't need to change anything, and it works everywhere.
As always, we look forward to talking with the broader community on this. Other ideas and suggestions are welcome!
I hope everyone enjoys the bit of extra oompf that comes with the new 7-Zip update.
Until next time...