This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
bad performance of g77(egcs) on Linux/Alpha
- To: egcs-bugs at cygnus dot com
- Subject: bad performance of g77(egcs) on Linux/Alpha
- From: Michal Jaegermann <michal at ellpspace dot math dot ualberta dot ca>
- Date: Wed, 8 Apr 1998 21:40:11 -0600 (MDT)
- Cc: burley at gnu dot org, rth at cygnus dot com, toon at moene dot indiv dot nluug dot nl
This is not a bug report in a strict sense but some performance
concerns were raised and they look to me as valid.
I was asked to look at the code available from
http://studbolt.physast.uga.edu/templon/fortran.html
under a title of "Silly benchmark", or something similar.
It actually calculates some dispersion of an electron energy on
an absorber, so this is not anything in "Byte benchmarks" style,
and it is used for comparison of various Fortran platforms.
A concern was raised as the guy in question tried to use g77 from
egcs-1.0.1 on Linux/Alpha (LX running at 600 Mhz). A performance
was not spectacular (144 seconds). After that he tried run the
same code and on the same Linux machine but compiled and linked
statically with OSF/1 compiler (version unknown). He got 41 seconds
for a runtime. This is a substantial discrepancy.
I tried to check this code on another Linux/Alpha (Cabriolet, ev4,
250 Mhz, kernel 2.0.33, glibc-2.0.7-5 ) with egcs-1.0.2. Results were
in order of Pentium 100 Mhz (around 450 secs). I tried few different
optimization options and also "hand-unrolling" a function gammln()
which is used in an inner loop of the program. I was able to drop a
few seconds from a running time but nothing substantial.
Is any reasonable explanation for these results beyond that a library
function log(), used by gammaln(), is possibly awfull?
I include below, for an ease of reference, a code which compiles with
g77, two version of gammaln() functions, my Makefile, and three html
documents, stolen from a location mentioned above, which describe
results achieved with different hardware and compilers.
Michal Jaegermann
michal@ellpspace.math.ualberta.ca
michal@harddata.com
begin 644 brem.tar.gz
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
6;:_MM;VVU_;:7K_E^A<8'_=U`'@`````
`
end