libstdc++/9876: filebuf::sputc more than 10% slower than putc

Paolo Carlini pcarlini@unitus.it
Fri Feb 28 16:43:00 GMT 2003


Pétur Runólfsson wrote:

>>    Yes, filebuf::sputc shall be improved: patches welcome,
>>    or, otherwise, stay tuned!
>>    
>>    However, the funny thing of your PR is that, as a matter of
>>    fact, I *cannot* reproduce the trend neither with mainline
>>    (which produces better code, indeed) nor with 3.2.2!
>>
>
>Whoops, s/putc/putc_unlocked/ :-P
>
>putc calls flockfile/funlockfile for each character,
>streambuf::sputc does not do so and should be compared against
>putc_unlocked.
>

Hi Petur.

Very Interesting issues... Indeed, putc_unlocked is _much_ faster (3 x ?)

However...

The interesting thing is the following: a series of streambuf::sputc,
does _not_ call an underlying C-library putc, but instead, upon overflow,
an underlying _M_file.xsputn, which means an underlying _locked_ fwrite,
_not_ an underlying fwrite_unlocked!

So, I would argue that your comparison was not fair before, and it's not
fair now! ;)

Needless to say, you are right, and Nathan is right, about the need to
improve our streambuf::sputc, but we still do _not_ have real numbers
to use as a point of reference.

Are you willing to work on this?

Paolo.

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=9876










More information about the Gcc-bugs mailing list