Advantages of 64-bit

Nowadays people who buy Windows or install Linux are confronted with the 32- vs. 64-bit choice. There are several advantages including memory management etc. This question and responses on Stack Overflow pretty much sums up the main advantages and points to consider.

I wanted to do  a real world test comparing memory operations running in different modes. This lead to this question and some findings – posted on Code Review. Now I’ve done some more testing divided into four groups 32- and 64-bit pointer operations – executed in 32- and 64-bit mode. These are the output:

64-bit pointer, 64-bit mode

  • Loops: 100 Elapsed time: 6987.638000 Average: 69.876380
  • Loops: 200 Elapsed time: 13861.296000 Average: 69.306480
  • Loops: 300 Elapsed time: 20833.421000 Average: 69.444737
  • Loops: 400 Elapsed time: 27746.943000 Average: 69.367358
  • Loops: 500 Elapsed time: 34693.142000 Average: 69.386284
  • Loops: 600 Elapsed time: 39019.204000 Average: 65.032007
  • Loops: 700 Elapsed time: 38858.330000 Average: 55.511900

64-bit pointer, 32-bit mode

  • Loops: 100 Elapsed time: 5601.273000 Average: 56.012730
  • Loops: 200 Elapsed time: 11104.902000 Average: 55.524510
  • Loops: 300 Elapsed time: 16671.022000 Average: 55.570073
  • Loops: 400 Elapsed time: 22228.157000 Average: 55.570392
  • Loops: 500 Elapsed time: 27787.730000 Average: 55.575460
  • Loops: 600 Elapsed time: 33332.861000 Average: 55.554768
  • Loops: 700 Elapsed time: 38896.038000 Average: 55.565769

32-bit pointer, 64-bit mode

  • Loops: 100 Elapsed time: 13312.479000 Average: 133.124790
  • Loops: 200 Elapsed time: 22025.908000 Average: 110.129540
  • Loops: 300 Elapsed time: 33019.403000 Average: 110.064677
  • Loops: 400 Elapsed time: 44024.916000 Average: 110.062290
  • Loops: 500 Elapsed time: 55038.448000 Average: 110.076896
  • Loops: 600 Elapsed time: 66054.053000 Average: 110.090088
  • Loops: 700 Elapsed time: 77091.699000 Average: 110.130999

32-bit pointer, 32-bit mode

  • Loops: 100 Elapsed time: 13775.434000 Average: 137.754340
  • Loops: 200 Elapsed time: 27503.340000 Average: 137.516700
  • Loops: 300 Elapsed time: 41255.826000 Average: 137.519420
  • Loops: 400 Elapsed time: 54918.705000 Average: 137.296762
  • Loops: 500 Elapsed time: 67934.638000 Average: 135.869276
  • Loops: 600 Elapsed time: 66102.285000 Average: 110.170475
  • Loops: 700 Elapsed time: 77136.964000 Average: 110.195663

The obvious conclusion is that the best reason to select a 64-bit operating system is if you have a lot of programs running in 64-bit mode. And another point for captain obvious: don’t select 64-bit OS if the code you are running is 32-bit – it will hurt the performance. The result from running with 64-bit pointers in 32-bit mode being fastest is actually a bit surprising - but it might be a result if the test environment optimizing for better performance - this test is executed on a Mac OS X machine – running 64-bit natively. To make 100% proper conclusion I would have to dual boot the same OS in different bit-settings on the same metal – which is very impossible for me!

Hopefully I’ll have the time to test on other environments soon.