[plt-scheme] interleaving the I and O in I/O
In response to my question on why alternating reads and printfs (instead
of doing all the printfs later) slowed down a program, Matthew Flatt
wrote on January 27:
> When you read from the original input port, the original output port is
> automatically flushed. So, the first version writes line-by-line, while
> the second writes the list in blocks. I think that accounts for the
> time difference.
>
> I note that there's another layer of automatic behavior here, which is
> that block buffering for output is enabled because output is directed
> to a file, as opposed to a tty.
>
> For 4.0, we should reconsider auto-flush of the current output port
> when reading from the current input port. Maybe it should only happen
> when the output is a tty. It's also awkward that the behavior is tied
> to the original ports, but that's another part of the trade-off in
> performance and expected behavior, and it will probably stay.
So, a followup I should have asked at the time: is there any way for the
user to modify this behaviour? Specifically, I want to avoid having the
current output port flushed every time there is a read. --PR