[OpenIndiana-discuss] oracle removes 32bit x86 cpu support for solaris 11 will OI do same?
Andrew Gabriel
illumos at cucumber.demon.co.uk
Sat Jun 25 17:57:22 UTC 2011
Michael Stapleton wrote:
> While we are talking about 32 | 64 bit processes;
> Which one is better?
> Faster?
> More efficient?
>
Initially, assuming a 32 verses 64 bit build doesn't change any
algorithms...
On x86, a 64 bit build of the same program will typically run ~50%
faster if it's CPU-bound, because more registers are available for the
compiler/optimizer to use. There's a wide variance depending what the
program does (I have an example which gets much better than 50% gain).
If it's not CPU-bound (and most things aren't), it makes no difference.
However, if the larger pointers and data items push the 64 bit program's
working set size over what fits in the CPU cache whereas the 32 bit
version does fit in the cache, then you can in theory see the 32 bit
version winning.
On sparc, a 64 bit build of the same program does not benefit from any
more registers like on x86, but it does pay the price for a larger
working set size, and I typically see a 10-14% performance reduction for
a CPU-bound program which has been just rebuilt 64bit.
However, if you can use the 64 bit address space to change the
algorithms used by your app, such as mmaping files rather than doing
loads of lseek/read/write ops, then you may see additional gains from
this, and on sparc that will often more than cancel out the reduction in
CPU performance by some way.
I wouldn't personally bother changing anything much which is shipped
with the OS (very rarely is the performance of things in /usr/bin an
issue). However, I would suggest taking these factors into account when
building the key applications your system is going to run, if you are
CPU-bound.
--
Andrew
More information about the OpenIndiana-discuss
mailing list