apr-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jon Travis <jtra...@covalent.net>
Subject Re: apr_vformatter changes & optimizations
Date Tue, 02 Oct 2001 03:56:03 GMT
On Mon, Oct 01, 2001 at 08:51:54PM -0700, Greg Stein wrote:
> On Mon, Oct 01, 2001 at 08:28:17PM -0700, Jon Travis wrote:
> > On Mon, Oct 01, 2001 at 04:07:13PM -0700, Greg Stein wrote:
> > > On Mon, Oct 01, 2001 at 01:43:55PM -0700, Jon Travis wrote:
> > > > I was thinking today that it would be nice to be able to pre-parse
> > > > *rintf style format strings into an intermediate array.  This would
> > > > have the potential to speed up code which uses *rintf by quite a bit.
> > > 
> > > Potential vs. demonstrated?
> > > 
> > > Can you show that we're spendig significant time parsing the format strings?
> > > Going and throwing a bunch of complexity for a small speedup might not be
> > > worthwhile :-)
> > > 
> > > Personally, I'm guessing that more time is spent assembling than parsing.
> > 
> > Since the parsing code is intermingled with the code that throws it into
> > the final buffer, there isn't a good way of profiling this right now.  
> > In order to figure out if we are, or not, I'll have to actually write the
> > code to just-parse or just-output the data, which is the end result of
> > my question, anyway.
> 
> Well, if you want to do the code, who's to stop you? :-)  But I would think
> it ought to be perf-tested before it goes in.

Agreed.  Working on it now.

> > Another useful feature of being able to pre-parse the list would be to
> > have the ability to examine the datatypes required for the format.  Why
> > is this terribly useful, you ask?  Well, v*printf takes a va_list, which
> > cannot portably be constructed at run-time.  However, if we had a special
> > apr_va_list, which we could take as an argument to our special formatter
> > (which also took a preparsed array), we could generate and use v*printf
> > formats/arguments at runtime. 
> 
> Assume that you create a sentinel-terminated list of non-opaque structures.
> An app could then programmatically declare that stuff ahead of time and skip
> the whole parse step.
> 
> Look at it as a sequence of instructions for assembling bits into a string.

Sure, you could skip the whole parse phase and generate the list yourself. 
That is my end-goal here.  Nobody would ever want to get rid of the parsing
code, though.

Either way, it would be nice to be able to (at run time) construct va_list
style arguments to pass off to a v*printf function.  That is a bit of a
poor point in C.  :-(

-- Jon


Mime
View raw message