Date: Wed, 14 Oct 1998 08:52:32 -0500 From: Eric Rudd Subject: Re: libc math function upgrade work To: djgpp-workers AT delorie DOT com Message-id: <3624AC9F.44717115@cyberoptics.com> Organization: CyberOptics MIME-version: 1.0 X-Mailer: Mozilla 4.05 [en] (Win95; U) Content-type: text/plain; charset=us-ascii Content-transfer-encoding: 7bit References: Reply-To: djgpp-workers AT delorie DOT com Eli Zaretskii wrote: > Building the tests with -pg and looking at the cumulative time of the > relevant math functions is the way to go, I think. > > In my view, it is important to know how much speedup does one gain by > using this version as opposed to both libm and the current libc > versions. (I would expect to see a significant difference, at least > relative to libm.) Otherwise, the merits of getting current versions > replaced are not clear enough. IIRC, one of Eric's original goals for > doing all this work was to gain speed, so this aspect seems to be > important to Eric as well. I made some systematic timings of my own on the new math routines I have been working on, versus the libm.a routines. These timings were made on an Intel P200 MMX, Rhino 9 motherboard, IBM PC-DOS 6.3. They were timed with a "rdtsc" timer routine, and are the average of 1000000 calls for each function with random arguments. I observed about 10-20% variation on various compiles, probably due to code alignment differences, but on the average the new routines are about three times faster than libm. I haven't done such extensive tests with the current libc, but when I was developing my routines I did some individual tests, and my routines were no more than 20% slower than the current libc. This is mostly due to the extra argument checking and changes to improve accuracy. Rudd library libm.a acos time = 207 clocks 1357 clocks acosh time = 262 clocks 573 clocks asin time = 212 clocks 1357 clocks asinh time = 252 clocks 334 clocks atan time = 131 clocks 156 clocks atan2 time = 157 clocks 408 clocks atanh time = 200 clocks 413 clocks ceil time = 56 clocks 61 clocks cos time = 99 clocks 176 clocks cosh time = 198 clocks 369 clocks exp time = 139 clocks 364 clocks expm1 time = 176 clocks 171 clocks fabs time = 17 clocks 46 clocks floor time = 55 clocks 60 clocks fmod time = 66 clocks 208 clocks hypot time = 103 clocks 1352 clocks log time = 121 clocks 254 clocks log10 time = 121 clocks 376 clocks log1p time = 130 clocks 189 clocks log2 time = 120 clocks 120 clocks pow time = 255 clocks 684 clocks pow10 time = 140 clocks 140 clocks pow2 time = 132 clocks 132 clocks sin time = 99 clocks 174 clocks sinh time = 234 clocks 316 clocks sqrt time = 84 clocks 1229 clocks tan time = 148 clocks 286 clocks tanh time = 222 clocks 286 clocks -Eric Rudd