Running 32-bit vs. 64-bit programs on a 64-bit OS

If I'm running a 64-bit OS (Windows XP x64 edition) and a program has both a 32-bit version and a 64-bit version, what are the advantages of using the 64-bit version? Will it be faster?


XP 64-bits is not more secure than 32-bits.

Vista and (better) Windows 7 introduced in 64-bit mode enhanced security with hardware-backed DEP, Kernel Patch Protection and mandatory driver signing.

So the only advantage in XP is that a 64-bits program can use more than 4 GB of memory.
However, practically speaking, no program needs so much memory, except in large servers.


if you run the 64-bit version, it will be able to address more memory, and if it is optimised well (as are some games) there may be a <10% improvement in performance. But in general it is not felt by the endusers.

i think most people run 64-bit just because of the memory addresing concerns.


If the program does any of:

  • access more than 2 or 3 GB of memory
  • do arithmetic on 64-bit integers, especially multiply and divide
  • assume higher CPU generation/feature-set in the 64-bit build and take advantage of that (e.g. SSE instructions)
  • use the twice-as-wide SIMD registers to good effect

then 64-bit can be a big win.

If none of that is the case, then the 64-bit version will be larger and use more memory, and might be slower! I've benchmarked a program and library tests built both ways, and the 32-bit version was faster. Apparently it caches worse, with the larger pointers leading to larger structures and the increased memory use prevents as much from fitting in the cache RAM at any given tier. The additional registers did not make up for that.

YMMV with each processor generation and model and across brands. But in general, memory access is a real speed bottleneck and that is a lasting trend.