How common are 32-bit Windows installations as of now?

Lymia Aluysia picture Lymia Aluysia · Jan 6, 2017 · Viewed 8.6k times · Source

I've noticed many programs are still released with 32-bit binaries or even only a 32-bit binary. How common are 32-bit systems? i.e., how many 32-bit vs. 64-bit systems are out there?

This is important to help decide whether to continue shipping 32-bit versions of software.

Answer

Dai picture Dai · Jan 6, 2017

Unless your application really needs more than 2GiB of memory space, or gains a significant benefit from the new and faster x64 operations, there's no need to move away from building for 32-bit x86, given x64's 100% backwards-compatibility (but 16-bit x86 is a different matter entirely) - ideally keep things simpler for your users with a single executable file which can run anywhere (at least on all Windows installs anywhere).

The answer to your question varies depending on the target user base:

  • People writing business software for internal use will (or should) know exactly what hardware they're targeting.
  • If you're writing games then take a look at the regularly-updated Steam Hardware Survey - http://store.steampowered.com/hwsurvey/ - which (as of 2017-12-06) reports 97.9% of users are running a 64-bit build of Windows - giving only 2.1% on 32-bit Windows, though it doesn't say what percentage of 32-bit Windows users are actually running on x64-capable hardware. But gamers on Steam tend to be in the "computer enthusiast" segment, who will run more recent hardware so usage of 64-bit hardware and OS installs will not be representative of all computer users everywhere.
  • If you're writing general-purpose software for distribution from your own website then take a look at your webserver logfiles, because the User-Agent header often tells you what OS people are using with a text string that often includes the CPU architecture (e.g. Chrome reports Win64; x64).
  • The percentage of users on 64-bit OS systems will also differ geographically - I expect a higher proportion of 32-bit OS users in "emerging markets" that would have a wider use of older (especially imported second-hand) machines than in more developed economies. Similarly market segments that are heavily tied to legacy software, such as government departments and many businesses will run a 32-bit Windows OS to retain 16-bit software compatibility or for 32-bit-only device driver support.

Rather than making a commitment to either 32-bit or 64-bit when it comes to distributing your executable, you can do both: While Windows PE executables (.exe and .dll files) unfortunately do not have the "fat binary" feature that macOS does (where a single executable can contain instructions for different architectures) you can actually fake a fat-binary using a workaround on Windows, as used by Sysinternals' utility programs; which is to have a 32-bit executable that contains the 64-bit binary as an embedded resource, and runs like so:

  1. Is this a 32-bit OS? If so, then run as normal
  2. Otherwise, it's a 32-bit process on a 64-bit system, so extract the 64-bit .exe version to a temporary directory
  3. Start the extracted 64-bit version
  4. Self-terminate