At 02:22 PM 3/14/2007 +0100, Eric Huelsmann wrote: >Jonathan, > >Any progress on the matter? I'd love to be able to close the issue in >Subversion by pointing to the right APR version!
My feeling at the moment is that the patch is ready to be applied, but Bill Rowe does not agree. I did some performance tests to see just what the effect of buffering would be, and when run on UNIX systems, I saw the expected ~4% degradation when splitting up large writes into 30 KB blocks. When run on Windows, however, I saw a massive performance *increase*, a factor of more than 3. So, a patch which unconditionally breaks writes up into 30 KB blocks would apparently be beneficial for Windows in all cases. There are currently two patches out there that I've submitted; one of them modifies the Win32 apr_file_write directly so that all writes are split, and the other one uses APR's built-in buffering on all console-related handles (and console handles only). Either one would fix the problem of large writes to consoles, but some people seem to think it would be better to always try the large write and then switch to buffered output if the write attempt fails with the "Insufficient buffer space" error. I think in principle this makes sense, but in practice it doesn't since there is actually a performance penalty on the platform for doing large writes in single calls to WriteFile. Anyway, I spoke with Bill Rowe about it a few days ago, and we agreed only that more performance testing is necessary, to see whether perhaps there is a way to make single large writes perform better than chunked writes as one would expect (they do on UNIX platforms), and to confirm that the performance characteristics are not inverted when writing to handles other than files. Jonathan Gilbert
