libm for 68881 and Sun fpa is incredibly slow
prl at eiger.uucp
prl at eiger.uucp
Thu Mar 2 19:31:31 AEST 1989
I have constructed a replacement for libm.a in which most of the C library
routines have had their code replaced by code out of the inline
replacement library.
I will be making this code available in sun-spots or in comp.sources.sun
(as appropriate), in a form which requires no distribution of Sun source
or binaries, as soon as it has been tested locally.
You can expect sqrt() to be more than 10 times faster in this library than
in the standard -lm!
The speedups are as follows (Sun3/280, SunOS 4.0.1):
Motorola 68881
Func -lm -lmfast libm.il
secs secs rel secs rel rel
-lm -lm -lmfast
cos() 9.43 1.85 5.10 1.67 5.65 1.11
sin() 8.87 1.77 5.01 1.65 5.38 1.07
tan() 12.98 1.97 6.59 1.83 7.09 1.08
acos() 5.13 2.37 2.16 2.27 2.26 1.04
asin() 6.40 2.37 2.70 2.20 2.91 1.08
atan() 9.22 1.82 5.07 1.70 5.42 1.07
log() 10.25 2.25 4.56 2.10 4.88 1.07
log10() 6.47 2.35 2.75 2.22 2.91 1.06
log2() 5.33 2.33 2.29 1.48 3.60 1.57
exp() 8.42 1.95 4.32 1.80 4.68 1.08
exp10() 9.37 2.12 4.42 2.02 4.64 1.05
exp2() 6.50 2.10 3.10 1.97 3.30 1.07
sqrt() 14.32 1.20 11.93 1.03 13.90 1.17
cosh() 4.82 2.23 2.16 2.10 2.30 1.06
sinh() 5.32 2.15 2.47 1.98 2.69 1.09
tanh() 5.57 2.33 2.39 2.23 2.50 1.04
atanh() 3.95 2.52 1.57 1.63 2.42 1.55
Weitek FPA
Func -lm -lmfast libm.il
secs secs rel secs rel rel
-lm -lm -lmfast
cos() 3.45 0.83 4.16 0.82 4.21 1.01
sin() 3.23 0.75 4.31 0.73 4.42 1.03
tan() 4.60 1.63 2.82 1.57 2.93 1.04
acos() 3.55 2.00 1.77 1.97 1.80 1.02
asin() 3.95 2.05 1.93 1.90 2.08 1.08
atan() 2.97 1.23 2.41 1.23 2.41 1.00
log() 4.42 1.27 3.48 1.28 3.45 0.99
log10() 4.17 2.07 2.01 1.93 2.16 1.07
log2() 3.43 1.93 1.78 1.95 1.76 0.99
exp() 3.15 1.42 2.22 1.25 2.52 1.14
exp10() 4.90 1.75 2.80 1.67 2.93 1.05
exp2() 3.32 1.75 1.90 1.68 1.98 1.04
sqrt() 12.37 1.18 10.48 1.18 10.48 1.00
cosh() 2.75 1.95 1.41 1.82 1.51 1.07
sinh() 3.03 1.75 1.73 1.68 1.80 1.04
tanh() 3.33 2.00 1.67 1.93 1.73 1.04
atanh() 2.32 2.12 1.09 2.10 1.10 1.01
NOTES:
1) -lmfast is my modified libm.a, libm.il is with the use
of the Sun-supplied inline code file.
2) Columns entitled `rel' are the speedup relative to the named column.
3) The times for each routine are for 50000 calls, with parameter values in the
range from slightly more than 0.0 to slightly more than 1.0, spaced linearly
by 1.0/50000.0.
4) Loop overhead has been subtracted, but not subroutine call overhead.
Peter Lamb
uucp: uunet!mcvax!ethz!prl eunet: prl at ethz.uucp Tel: +411 256 5241
Integrated Systems Laboratory
ETH-Zentrum, 8092 Zurich
More information about the Comp.sys.sun
mailing list