[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Missing APR_BUFFERED flag on file open?

From: Erik Huelsmann <ehuels_at_gmail.com>
Date: 2005-11-03 15:40:14 CET

On 11/3/05, Julian Foad <julianfoad@btopenworld.com> wrote:
> Erik Huelsmann wrote:
> > It looks like we use a lot of non-buffered file i/o:
> >
> > Seaching for '(APR_READ or APR_WRITE) and not APR_BUFFERED' returns 31
> > files, whereas '(APR_READ or APR_WRITE) and APR_BUFFERED' only returns
> > 7.
> >
> > Is it intentional that we haven't specified APR_BUFFERED so often?
>
> Hmm. What exactly is the benefit of this flag? Looking at the code, I see it
> causes APR to do its own buffering on top of what the C run-time library and/or
> OS already do. This presumably allows greater read/write efficiency (depending
> on the size of the transfers) at the cost of a time and memory overhead on the
> initial access.
>
> Does that balance out in our favour? I would expect an API to be designed so
> that it works best for the usual cases without any extra options being
> specified, which would imply that the buffered mode is only appropriate for
> some special cases, but that might not be so.
>
> Searching the web, I found an email discussion in 2000 questioning whether the
> buffering code is really wanted. Apache had httpd stopped using it, which
> casts doubt on its value.
> <http://mail-archives.apache.org/mod_mbox/httpd-dev/200004.mbox/%3cPine.LNX.4.10.10004031444170.19464-100000@nebula.lyra.org%3e>
>
>
> The other thing I found was a libapr tutorial which recommends requesting
> buffered mode in most cases.
> <http://dev.ariel-networks.com/apr/apr-tutorial/html/apr-tutorial-5.html>
>
> So, conflicting thoughts.

From the apr dev list (recently)

------------------------------------
APR doesn't seem to currently offer a buffered stdin/stdout/stderr. (Or
am I missing something?)

Unfortunately the lack of a buffered stdin is killing an application I'm
porting to APR (httpd's support/logresolve.c).

The attached patch implements some;

       apr_file_open_buffered_std(in|out|err)

functions.

--
Colm MacCárthaigh                        Public Key: colm+pgp@stdlib.net
------------------------------------
Which suggests to me that buffers may make a big difference. I'd need
to time a patched test-suite run to be sure though...
> One place it is probably not appropriate is when reading or writing a whole
> file at once.
Ok.
bye,
Erik.
Received on Thu Nov 3 15:41:09 2005

This is an archived mail posted to the Subversion Dev mailing list.