On Fri, 09 Nov 2007 03:27:50 +0300, Anton Vodonosov vodonosov@mail.ru wrote:
Sorry about tabs. You may consider setting emacs variable indent-tabs-mode to nil in your sources.
I have that, but the tabs were in your patch. Emacs won't automatically remove tabs introduced from patches, you'd have to do that automatically...
Few days ago I've tried to measure performance improvement gained by buffering in stream-write-sequence. It turned out that in real word scenarios no improvement at all, because underlying stream always provides necessary buffering.
For example, to notice changes in performance when working with file, we must use unbuffered file stream, which is of course very uncommon (moreover, in case of normal, buffered, file stream performance is slightly worse because we do some additional work on our side; but you must do lot of output to notice this).
Therefore, I've decided to test it with network stream. I've setup hunchentoot and configured simple easy-handler that just return a 10k string. Also, I've changed the make-socket-stream function to create unbuffered socket (:buffering :none in sbcl).
On the other host the was drakma performing a hundred of requests to this handler.
I've tested this setup with two versions of flexi streams: 0.11.0 - without buffering and 0.13.1 - with buffering. It is surprising (for me) that in this case there was no performance difference too.
Using sniffer (ethreal) I've discovered that even in case if we do not do any buffering on sbcl side, buffering is anyway performed - by TCP implementation. When we do lot of write-byte it sends first packet with data length = 1, but all subsequent packets are of size
1k. Looks like they have some micro timeout after our write-byte
to see whether we will do write-byte again.
Maybe this buffering in stream-write-sequence is unnecessary...
Hmmm....
ISTR that I did some simple tests with your patch and that there was a noticeable difference, but I don't have the results anymore. Anyway, I think I'll leave it like it is for now.
P.S. There is a little test for stream-line-column function in the attach.
Thanks.
Cheers, Edi.