Torsten Rohlfing writes: > 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
You have weird hardware. [EMAIL PROTECTED] ~]$ time ./testlog64 real 0m7.330s user 0m7.328s sys 0m0.004s [EMAIL PROTECTED] ~]$ time ./testlog32 real 0m7.538s user 0m7.528s sys 0m0.000s Andrew.