Mail Archives: cygwin/2003/06/22/02:59:09
Christopher Faylor wrote:
> This crops up on the cygwin list from time to time.
>
> IIRC, if you use 'setbuf(f, NULL)' in newlib (as is the case for
> stderr), it causes newlib to flush on every character. I submitted a
> patch to fix this behavior many years ago but it was rejected. I think
> the rationale was basically a "This isn't broken. We're allowed to do
> this" but I don't really recall exactly why the patch was rejected.
Hmmm. Well, I managed to come up with this minimal testcase:
#include <stdio.h>
int main(int argc, char **argv)
{
char *msg = "This is a test! ", *ptr;
int i;
for(i = 0; i < 100; i++) {
for(ptr = msg; *ptr; ptr++) {
fputc(*ptr, stderr);
}
}
}
Running the above with CYGWIN=tty
real 0m15.806s
user 0m0.030s
sys 0m0.010s
Without CYGWIN=tty
real 0m0.078s
user 0m0.030s
sys 0m0.020s
Should it really take almost 16 seconds to print 1600 characters to
stderr?
Furthermore, if you change 'stderr' to 'stdout' above, the problem no
longer happens, regardless of the setting of tty in $CYGWIN. So it's
specific to stderr.
Can anyone make heads (or tails) of this now?
Brian
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
- Raw text -