Further to what Jim mentioned below, 64-bit-ness does not imply faster
execution.  On the contrary it means each instruction, data address and data
access requires more bits to move across the bus, compared to the 32-bit
version, to do the same work.  For example to sort a list of words (text)
the CPU compares byte codes which do not benefit from having 64-bit
registers.  But every program variable accessed is done so via a 64-bit
address in stead of a 32-bit address, so this places a bigger load on the
address bus on every operation, without any benefit at all (the data
operated on still fits into 32-bit registers)

If however your application use the features of 64-bit programs then the
advantages can be more than these overheads.  For the most part this means
programs that require access to more than 4 GB of data in RAM.

Cheers,
  _Johan

On Tue, Aug 17, 2010 at 4:23 AM, Jim Mauro <james.ma...@oracle.com> wrote:

> Typically such performance disparities are due to
> changes in the memory footprint with the 64-bit code,
> and resulting cache miss rates being higher with the
> 64-bit code than the 32-bit code.
>
> You need to use the Studio tools to profile the code,
> and/or cputrack to measure cache hit rates.
>
> Thanks,
> /jim
>
>
> On Aug 16, 2010, at 9:58 PM, Kishore Kumar Pusukuri wrote:
>
> > Hi,
> > I am surprised with the performances of some 64-bit multi-threaded
> applications on my AMD Opteron machine. For most of the applications, the
> performance of 32-bit version is almost same as the performance of 64-bit
> version. However, for a couple of applications, 32-bit versions provide
> better performance (running-time is around 76 secs) than 64-bit (running
> time is around 96 secs). Could anyone help me to find the reason behind
> this, please?
> >
> >
> > $ldd program-64  (64-bit version)
> >        libpthread.so.1 =>       /lib/64/libpthread.so.1
> >        libstdc++.so.6 =>        /usr/lib/64/libstdc++.so.6
> >        libm.so.2 =>     /lib/64/libm.so.2
> >        libgcc_s.so.1 =>         /usr/lib/64/libgcc_s.so.1
> >        libc.so.1 =>     /lib/64/libc.so.1
> >
> > $ ldd program-32 (32-bit version)
> >        libpthread.so.1 =>       /lib/libpthread.so.1
> >        libstdc++.so.6 =>        /usr/lib/libstdc++.so.6
> >        libm.so.2 =>     /lib/libm.so.2
> >        libgcc_s.so.1 =>         /usr/lib/libgcc_s.so.1
> >        libc.so.1 =>     /lib/libc.so.1
> > --
> > This message posted from opensolaris.org
> > _______________________________________________
> > perf-discuss mailing list
> > perf-discuss@opensolaris.org
>
> _______________________________________________
> perf-discuss mailing list
> perf-discuss@opensolaris.org
>



-- 
Any sufficiently advanced technology is indistinguishable from magic.
    Arthur C. Clarke

My blog: http://initialprogramload.blogspot.com
_______________________________________________
perf-discuss mailing list
perf-discuss@opensolaris.org

Reply via email to