
Hello skaller, Thursday, June 21, 2007, 7:06:09 AM, you wrote:
generally speaking, people want to use 64-bit code in order to work with much larger data space, overall speed may be better than using 32-bit version with 2gb limit
With x86_64, 64 bit programs are usually faster than 32 bit ones even for small data, probably because despite the extra stack space etc that is required for double sized pointers, there are also more registers. There may also be a penalty for 32 bit code in other parts of the processing pipeline, eg segmentation (which is not available for 64 bit code).
this small speed increase will be easily outweighted by using non-optimizing (un*register*ized means "non using registers in optimal way") compiler the whole problem is that GHC has very complex compilation strategy which is fine-tuned for every platform fully supported. it mangles asm code produced by C compiler, it uses registers directly, so on. this is so-called registerized build. and without all these optimizations it just generates plain ANSI C code, this is unregizterized build. the last is much simpler to implement - you need to port only libraries/RTS
IMHO the main use of 32 bit machines now is embedded applications, for example mobile phones.
but this doesn't apply to 32-bit code. moreover, you say about computers that are now selled but there are lots of old boxes. and not everyone with 64-bit CPU buys 64-bit OS from my POV, main reason for 64-bitness is using more than 2G of memory, and growed amount of memory in typical desktops was the reason why 64-bit systems now becomes popular. in terms of CPU architecture, x86-64 is still CISC while RISC and EPIC architectures proven their efficiency in last 20 years. doubled amount of registers is very small step in this direction -- Best regards, Bulat mailto:Bulat.Ziganshin@gmail.com