The only real difference between the posted example, is that the 64 bit version uses opcodes that work on 64 bits, and the 32 bit version on 32 bits for example:
lea - is "Load Effective Address" ,which loads an address into a register.
the 32 bit version uses leal, which is the "long" or 32 bit version.
the 64 bit version uses leaq, which is the "quad" or 64 bit version (q = quad word or 4 x 16 bit words).
So other than some some-and-mirrors (inclusion of debug data in one example but not the other only serves to confuse average forum members), there is *no* real difference between the two that can be used to imply any kind of performance benefit.
Also realize that besides 64/32 bit:
- There are several command extensions (SSE for example) that can be leveraged by a compiler, if that extension is available on the processor the code is running on.
- There are manufacturer specific tweaks (Intel vs AMD).
- There are Compiler and library performance tweaks (intel vs microsoft vs gnu).
- There are third party libraries that can affect performance as well (SmartHeap for example)
So arguing performance benefits is dubious at best. We do not know what optimizations are used by Cakewalk, if there are hand-written optimizations, what additional libraries Cakewalk used, and how much of the code base contains code rot (old code thats been there for awhile and has been buried under repeated enhancements, making it inefficient, and a maintenance liability).
The one universal truth about 64 bit code is that it can access a larger address space, which on windows means less swapping of memory regions to the hard disk.