On Fri, 2002-06-28 at 19:01, Ryan Bloom wrote: > > From: Brian Pane [mailto:[EMAIL PROTECTED]] > > > > One of the biggest remaining performance problems in the httpd is > > the code that scans HTTP requests. In the current implementation, > > read_request_line() and ap_get_mime_headers() call ap_rgetline_core(), > > which has to: > > - create a temporary brigade > > - call ap_get_brigade() to get the next line of input from the > > core input filter, which in turn has to scan for LF and split > > the bucket > > - copy the content into a buffer, > > - destroy the temp brigade > > - call itself recursively in the (rare) folding case > > And all this happens for every line of the request header. > > Have you looked at which of these are causing the most performance > problems?
The creation and destruction of the temp brigade are most time-consuming parts. And the brigade creation and destruction spend most of their time registering and unregistering pool cleanup callbacks. > It seems to me that the easiest thing to do, would be to use > a persistent brigade, which removes two steps from this. That definitely would help. We'd have to put the persistent brigade in the request_rec in order for ap_rgetline_core() to find it. I'll experiment with this approach and post a patch if it works well. --Brian