Justin Erenkrantz wrote: > --On Monday, April 25, 2005 12:47 PM -0500 Rici Lake <[EMAIL PROTECTED]> > wrote: .... >> - return next->frec->filter_func.out_func(next, bb); >> + result = next->frec->filter_func.out_func(next, bb); >> + apr_brigade_cleanup(bb); >> } >> - return AP_NOBODY_WROTE; >> + return result; >> } > > > This introduces a really large overhead as we'd be calling the cleanup > for *every* output filter we invoke. So, -0.9999. -- justin
I disagree on 'really large overhead'. The supposed common case, of an empty brigade, is one extra function call, and one pointer compare inside brigade_cleanup. If this is too much, it could be inlined, to do the compare, inside ap_pass_brigade. Put in some good branch prediction, and its effective overhead for an already empty brigade is 0. There are so many other 'really large overheads' that completely dwarf this in comparison, I don't expect it to make any difference in a 'benchmark'. Plus, I hear those new dual core opterons are really nice. I would rather have a better and cleaner API, than save a few CPU cycles here. -Paul