[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