It seems that there's a common belief that 64-bit is going to generally make applications and server applications faster. But it's not that simple and actually most well written 32-bit applications will be slower when ported and recompiled for 64-bit. Why that?

The size of all internal data structures increases significantly, the same applies for code density. In turn this means far less efficient caches (of all levels) and given that the speed difference between e.g a L1 cache and main memory access is in the same order of magnitude as main memory to hard drive, that will actually have a quite noticeable impact on performance.
Another thing to remember is that most applications don't use any specific 64-bit calculations (NexusDB for sure doesn't contain many of them), so they won't benefit greatly from the ability of 64-bit code to perform such calculations with single instructions.

Considering above, what are the benefits of going to 64 bit? Well generally speaking x64 gives you 3 advantages:

  • larger address space
  • more registers (R8 to R15)
  • register size increased from 32 to 64bit, so you can have arithmetic operations directly on 64bit values

More registers sure is something that's interesting for the compiler, but most speed advantages are offset by code and data bloat. Same for the increased register size except for applications doing a huge number of 64bit operations.

If you're not sure about all the above, look around a bit for benchmarks that perform the same work as 32 and 64bit versions you will rarely find cases where 64bit is performing noticeable better, but you will see a good number of cases where it's actually slower.

So why is NexusDB pursuing 64-bit then?

Three reasons:

  • First is market expectation: not matter what we say, the hype around 64-bit is too big to be ignored. We can't change peoples opinion and to not fall behind competition we need to go with the market. Actually we expect (we are quite of sure of it in fact) the 32-bit AWE server which will go on sale in the next few days to perform better on a 64-bit OS (or 32-bit that supports enough RAM) than a native 64-bit server.
  • The second reason is future proofing our products. There are already some API's that could be very useful for future extensions that are only available for native 64-bit. These will likely become more and more in the future and we don't want to be left behind.
  • The third reason is that it will be a quite safe and relatively "cheap" way for us to look at general portability of NexusDB to other systems. It will be a test if FP is up to the stage where we need it for providing a stable and fast server.

I felt that it is important to point out above to people as the general hype around 64-bit is possibly creating wrong expectations about what native 64-bit computing means. It's not about making computing faster in general. It's mainly about breaking down a (one more) memory barrier that allows us developers to deal with the ever increasing amount of data. While the same can be achieved by using already available technology (AWE) it's surely making life easier for most people, but as everything else, it comes with a price which is the fact that applications will become more resource hungry.

Home | Community | Blogs | Hannes' Blog