On Jan 21, 2008 7:00 PM, Kevin Williams <[EMAIL PROTECTED]> wrote: > On Jan 21, 2008 1:55 PM, Luis Lavena <[EMAIL PROTECTED]> wrote: > > Hey ry, did you tweaked the HttpParser like Thin guy did? > > > > I was thinking about the modifications he did: > > > > He removed all the if conditions evaluating http_field, > > request_method, request_uri and others (most the ones that are > > allocated/initialized in HttpParser_alloc). > > I don't think those conditions were *removed*, I think they were > *moved*, but I've only glanced at the C code and would barely know > what I was looking at anyway. :)
No, he removed them: http://pastie.caboo.se/141633 The ragel code will generate the http11_parser.c file, and http11.c file defines all the functions pointers: http11.c:207..225: VALUE HttpParser_alloc(VALUE klass) { VALUE obj; http_parser *hp = ALLOC_N(http_parser, 1); TRACE(); hp->http_field = http_field; hp->request_method = request_method; hp->request_uri = request_uri; hp->fragment = fragment; hp->request_path = request_path; hp->query_string = query_string; hp->http_version = http_version; hp->header_done = header_done; http_parser_init(hp); obj = Data_Wrap_Struct(klass, NULL, HttpParser_free, hp); return obj; } Theory indicates that allocation happens way before the ragel code is getting executed, so there is no need to evaluate the conditions all the time, ending with a speed boost. -- Luis Lavena Multimedia systems - A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools. Douglas Adams _______________________________________________ Mongrel-users mailing list Mongrel-users@rubyforge.org http://rubyforge.org/mailman/listinfo/mongrel-users