mark warren bracher wrote:
> I didn't ever actually see a post with newer numbers, so here goes......
> 
> I tested the same 50 clients/5000 requests as stas' test in the guide. 
> one pass with 2 uri params; another with 26.  naturally I ran it all on 
> a server big (and quiescent) enough to handle the 50 concurrent 
> requests.  I left out CGI since we already know it is slow.
> 
> /test/params and /test/args are mod_perl handlers (I don't use 
> Apache::Registry for anything) ParamsTest and ArgsTest respectively. the 
> code for both handlers and the relevant pieces of ab output are pasted 
> in below.
> 
>   -------------------------------------------------------------
>   name           query_length  | avtime completed failed    rps
>   -------------------------------------------------------------
>   apache_args              25  |  33.77      5000      0   1481
>   apache_request           25  |  33.17      5000      0   1507
>   apache_args             337  |  43.51      5000      0   1141
>   apache_request          337  |  45.31      5000      0   1103
>   --------------------------------------------------------------
>   Non-varying sub-test parameters:
>   --------------------------------------------------------------
>   concurrency : 50
>   connections : 5000
> 
> so $apr->param is marginally faster than $r->args for the shorter query, 
> marginally slower for the longer one.  I think this may be because we 
> can return the full hash $r->args whereas we need to map over 
> $apr->param to get a hash (so param gets called three times for the 
> short query, 27 times for the larger one).  still, much closer numbers 
> than the former test...

Thanks Mark for pushing me to rerun the benchmark :)

Actually from the tests that I just run Apache::Request::param is 
actually kicks $r->args on long inputs, and a bit faster on the short 
query strings. Even though as you have noticed we call $q->param() 2 x 
keys times more for each request.

Here are the results:

  concurrency connections name                 query_length |  avtime 
completed failed    rps
--------------------------------------------------------------------------------------------

           50        5000 apache_request_param           25 |      53 
    5000      0    900
           50        2000 apache_request_param           25 |      54 
    2000      0    884
           50        5000 r_args                         25 |      55 
    5000      0    879
           50        2000 apache_request_param          105 |      54 
    2000      0    879
           10        5000 apache_request_param           25 |      10 
    5000      0    878
           50        5000 r_args                        105 |      55 
    5000      0    876
           10        2000 r_args                        105 |      10 
    2000      0    869
           50        5000 apache_request_param          105 |      56 
    5000      0    865
           10        5000 apache_request_param          105 |      10 
    5000      0    855
           10        5000 r_args                         25 |      11 
    5000      0    850
           10        2000 apache_request_param          105 |      11 
    2000      0    836
           10        2000 r_args                         25 |      11 
    2000      0    835
           10        2000 apache_request_param           25 |      11 
    2000      0    832
           50        2000 r_args                         25 |      58 
    2000      0    827
           10        5000 r_args                        105 |      11 
    5000      0    810
           50        5000 apache_request_param          207 |      64 
    5000      0    754
           50        2000 apache_request_param          337 |      64 
    2000      0    750
           10        2000 apache_request_param          207 |      12 
    2000      0    749
           10        2000 apache_request_param          337 |      12 
    2000      0    749
           50        2000 apache_request_param          207 |      64 
    2000      0    749
           10        5000 apache_request_param          207 |      12 
    5000      0    746
           50        2000 r_args                        105 |      64 
    2000      0    744
           10        5000 apache_request_param          337 |      12 
    5000      0    732
           50        5000 r_args                        207 |      72 
    5000      0    671
           10        2000 r_args                        337 |      14 
    2000      0    665
           10        5000 r_args                        207 |      14 
    5000      0    661
           50        2000 r_args                        337 |      73 
    2000      0    660
           10        2000 r_args                        207 |      14 
    2000      0    657
           50        5000 apache_request_param          337 |      74 
    5000      0    647
           50        2000 r_args                        207 |      75 
    2000      0    645
           10        5000 r_args                        337 |      15 
    5000      0    627
           50        5000 r_args                        337 |      81 
    5000      0    601

I'll update this and other benchmarks. Something that should be done 
once in a while since the software's performance tend to change over the 
time :)
I'll probably run many more tests and build graphs, so it'll be much 
easier to see what's happening, than from looking at many numbers.

__________________________________________________________________
Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/     mod_perl Guide ---> http://perl.apache.org
mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com

Reply via email to