This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: gcc: poor log() performance on Intel x86_64


I think it is a glibc issue.


H.J.
-----
On Tue, Mar 14, 2006 at 01:18:34PM -0800, Torsten Rohlfing wrote:
> Greetings.
> 
> I am experiencing a major performance problem with the log() function on 
> the x86_64 platform. It can be illustrated with the following little 
> test program:
> 
> ====testlog.cxx=======
> #include <math.h>
> 
> main()
> {
>        float f = 0;
>        for ( int i = 0; i < 1e8; ++i )
>                f += log( i );
> }
> ==================
> 
> I compile this twice, on the same machine, once as a 64bit binary and 
> once as 32bits:
> 
> g++ -mtune=nocona -msse -msse2 -msse3 -O3 -o testlog64 testlog.cxx
> g++ -m32 -mtune=nocona -msse -msse2 -msse3 -O3 -o testlog32 testlog.cx
> 
> Compiler config is:
> 
> Using built-in specs.
> Target: x86_64-redhat-linux
> Configured with: ../configure --prefix=/usr --mandir=/usr/share/man 
> --infodir=/usr/share/info --enable-shared --enable-threads=posix 
> --enable-checking=release --with-system-zlib --enable-__cxa_atexit 
> --disable-libunwind-exceptions --enable-libgcj-multifile 
> --enable-languages=c,c++,objc,java,f95,ada --enable-java-awt=gtk 
> --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre 
> --host=x86_64-redhat-linux
> Thread model: posix
> gcc version 4.0.2 20051125 (Red Hat 4.0.2-8)
> 
> When I run the two binaries on the exact same box and time them, I get 
> the following outputs:
> 
> time ./testlog64
> 13.264u 0.000s 0:13.26 100.0%   0+0k 0+0io 0pf+0w
> 
> time ./testlog32
> 6.960u 0.004s 0:06.96 100.0%    0+0k 0+0io 0pf+0w
> 
> In other words, the log function is approximately twice as fast in the 
> 32bit binary as it is in the 64bit binary. Does anyone have any idea 
> what this is caused by or how I could further diagnose the problem? It 
> seems that using logf() I get approximately identical performance for 
> both targets, but unfortunately then the results I get are slightly 
> different for the two, and that's also not acceptable.
> 
> Thanks to everyone in advance for any insights you may be able to provide!
>  Torsten
> 
> -- 
> Torsten Rohlfing, PhD          SRI International, Neuroscience Program
> Research Scientist             333 Ravenswood Ave, Menlo Park, CA 94025
>  Phone: ++1 (650) 859-3379      Fax: ++1 (650) 859-2743
>   torsten@synapse.sri.com        http://www.stanford.edu/~rohlfing/
> 
>     "Though this be madness, yet there is a method in't"


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]