Hey all,
here is a less hacky version of the query string C extension I posted before.
http://s3.amazonaws.com/four.livejournal/20070927/qsp.tar.bz2
It uses an http11-like interface to the state machine. the
escape/unescape functions are also slightly more libraryish.
again, here is the about benchmark results. it seems to be about 10
times faster than the ruby functions. i''ve seen query_parse pop up in
profiles of merb, one can except on query string intensive actions
(forms) that this would noticeably speed up the app.
user system total real
escape: Single long
M: 1.710000 0.030000 1.740000 ( 2.192255)
Q: 0.020000 0.010000 0.030000 ( 0.032105)
escape: Many small
M: 2.670000 0.030000 2.700000 ( 3.288974)
Q: 0.270000 0.000000 0.270000 ( 0.333991)
unescape: Single long
M: 2.500000 0.030000 2.530000 ( 3.688766)
Q: 0.020000 0.010000 0.030000 ( 0.028780)
unescape: Many small
M: 3.380000 0.030000 3.410000 ( 3.785195)
Q: 0.260000 0.000000 0.260000 ( 0.323243)
query_parse: one long query
M: 3.720000 0.090000 3.810000 ( 4.513557)
Q: 0.460000 0.020000 0.480000 ( 0.556755)
query_parse: many short query strings
M: 5.960000 0.070000 6.030000 ( 7.212142)
Q: 0.900000 0.010000 0.910000 ( 1.058425)
query_parse: deeply nested query
M: 0.000000 0.000000 0.000000 ( 0.000247)
Q: 0.000000 0.000000 0.000000 ( 0.001138)
ry