Perry E. Metzger a écrit :
It is very application dependent. The AMD64 architecture has more registers, and the registers are wider, so for some applications you can get significant speedup. On the other hand, you also get wider pointers and such, and those consume more cache and memory. You should benchmark if you're doing any sort of performance critical application to figure out which is better for your app.
Ok, that does not surprise me. However, if I had got the point of other answers, switching from i386 to amd64 supposes recompiling all the applications, because 32-bit userland under 64-bit kernel is still buggy, right?
According to a recent article published on appleinsider.com, Unises' i386 kernels, although they can address the integrality of the 4 GiB memory space, both in user- and kernel mode, suffer from a TLB cache penalty each time a system call (trap) or interrupt is entered in, because the OS has to switch the MMU between user- and kernel VM space, and thus flush the TLB before reloading it. This penalty is not incured by 64-bits kernels, because the whole VM space can safely be divided between user and kernel space without any overlap, and thus the TLB can hold "global" VM page translation infos (what 32bit-Windows versions actually do, limiting user memory space to 2 or 3 GiB at most).
Vincent