File: bench.pl

package info (click to toggle)
libwww-form-urlencoded-perl 0.26-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 160 kB
  • sloc: perl: 286; makefile: 3
file content (69 lines) | stat: -rw-r--r-- 2,343 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#!/usr/bin/perl

use strict;
use warnings;
use Benchmark qw/:all/;
use WWW::Form::UrlEncoded;
use WWW::Form::UrlEncoded::PP;
use URL::Encode::XS;
use Text::QueryString;


my @query_string = (
    "foo=bar",
    "foo=bar&bar=1",
    "foo=bar;bar=1",
    "foo=bar&foo=baz",
    "foo=bar&foo=baz&bar=baz",
    "foo_only",
    "foo&bar=baz",
    '%E6%97%A5%E6%9C%AC%E8%AA%9E=%E3%81%AB%E3%81%BB%E3%82%93%E3%81%94&%E3%81%BB%E3%81%92%E3%81%BB%E3%81%92=%E3%81%B5%E3%81%8C%E3%81%B5%E3%81%8C',
);

my $xs = Text::QueryString->new;

cmpthese(timethese(-1, {
    text_qs => sub {
        foreach my $qs (@query_string) {
            my @q = $xs->parse($qs);
        }
    },
    wwwform_xs => sub {
        foreach my $qs (@query_string) {
            my @q = WWW::Form::UrlEncoded::XS::parse_urlencoded($qs);
        }
    },
    wwwform_xs_ref => sub {
        foreach my $qs (@query_string) {
            my $q = WWW::Form::UrlEncoded::XS::parse_urlencoded_arrayref($qs);
        }
    },
    wwwform_pp => sub {
        foreach my $qs (@query_string) {
            my @q = WWW::Form::UrlEncoded::PP::parse_urlencoded($qs);
        }
    },
    urlencode_xs => sub {
        foreach my $qs (@query_string) {
            my $q = URL::Encode::XS::url_params_flat($qs);
        }
    },
}));


__END__
Benchmark: running text_qs, urlencode_xs, wwwform_pp, wwwform_xs, wwwform_xs_ref for at least 1 CPU seconds...
   text_qs:  1 wallclock secs ( 1.11 usr +  0.00 sys =  1.11 CPU) @ 51661.26/s (n=57344)
urlencode_xs:  1 wallclock secs ( 1.11 usr +  0.00 sys =  1.11 CPU) @ 96863.96/s (n=107519)
wwwform_pp:  1 wallclock secs ( 1.15 usr +  0.00 sys =  1.15 CPU) @ 10387.83/s (n=11946)
wwwform_xs:  2 wallclock secs ( 1.10 usr +  0.00 sys =  1.10 CPU) @ 86884.55/s (n=95573)
wwwform_xs_ref:  1 wallclock secs ( 1.06 usr +  0.00 sys =  1.06 CPU) @ 95466.98/s (n=101195)
                  Rate wwwform_pp text_qs wwwform_xs wwwform_xs_ref urlencode_xs
wwwform_pp     10388/s         --    -80%       -88%           -89%         -89%
text_qs        51661/s       397%      --       -41%           -46%         -47%
wwwform_xs     86885/s       736%     68%         --            -9%         -10%
wwwform_xs_ref 95467/s       819%     85%        10%             --          -1%
urlencode_xs   96864/s       832%     87%        11%             1%           --