- What is the difference between building a .NET project to target 32-bit or 64-bit?
- Are there computers that aren't able to run 32-bit programs and only 64-bit?
- Do x64 programs run twice as fast?
The only real difference you'd notice when using a HLL is going to be code size, and discovering that some features/libraries aren't available for x64 yet. Oh, and x64 code tends to be less performant, at least under .NET. The app I'm working on runs about 20% faster when I compile for x86. I don't know if it's because I use more bus bandwidth moving 8-byte quantities around, or if there's some "chunking" going on to adapt 32-bit APIs to 64-bit.
At the level you are talking about (.NET) there is very little difference. When you are using completely managed code the JIT will automatically compile your code and it will work pretty much the same, with different performance characteristics. For some things it will be faster (processing a lot of data, data could be processed in 64 bit chunks, more registers available etc), and for others slower (64 bit data (ie pointers) is slower to load into the cache for starters, meaning more data and slower transfers from main memory).
You only really have to worry about the difference when you use unmanaged code. This blog has a good run down of the issues.
The .Net Programs that will be written for 64bit systems will have larger address space, and so will be much faster than x86-32 bit based programs. Also latest .NET Language compilers produce much optimized code. JIT is also improved in recent years and now you can do Multi-core JIT optimization. Debuggers are also improved. Meanwhile, better and optimized code is produced for 64bit - based systems.