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

Reply via email to