File: benchmark.pl

package info (click to toggle)
librouter-simple-perl 0.17-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 200 kB
  • sloc: perl: 325; makefile: 2
file content (85 lines) | stat: -rw-r--r-- 2,513 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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
use strict;
use warnings;
use Benchmark qw/:all/;
use Data::Dumper;
use Plack::Request;

my ($hr, $rs);
{
    package HR;
    use HTTP::Router::Declare;
    $hr = router {
        # path and params
        match '/' => to { controller => 'Root', action => 'index' };

        # path, conditions, and params
        match '/home', { method => 'GET' }
            => to { controller => 'Home', action => 'show' };
        match '/date/{year}', { year => qr/^\d{4}$/ }
            => to { controller => 'Date', action => 'by_year' };

        # path, params, and nesting
        match '/account' => to { controller => 'Account' } => then {
            match '/logout' => to { action => 'logout' };
            match '/login'  => to { action => 'login' };
        };
    };
}
{
    package RS;
    use Router::Simple::Declare;
    $rs = router {
        # path and params
        connect '/' => { controller => 'Root', action => 'index' };

        # path, conditions, and params
        connect '/home', { controller => 'Home', action => 'show' }, { method => 'GET' };
        connect '/date/{year:\d{4}}',
            { controller => 'Date', action => 'by_year' };

        # path, params, and nesting
        submapper('/account', {controller => 'Account'})
            ->connect('/logout', {action => 'logout'})
            ->connect('/login',  {action => 'login'});
    };
}
{
    package HD;
    use HTTPx::Dispatcher;

    # path and params
    connect '/' => { controller => 'Root', action => 'index' };

    # path, conditions, and params
    connect '/home', { controller => 'Home', action => 'show' }, { method => 'GET' };
    connect '/date/{year:\d{4}}',
        { controller => 'Date', action => 'by_year' };

    # path, params, and nesting
    connect '/account/logout' => {controller => 'Account', action => 'logout'};
    connect '/account/login' => {controller => 'Account', action => 'login'};
}

#arn Dumper($hr->match('/account/login'));
#arn Dumper($rs->match('/account/login'));

my $req  = Plack::Request->new({ PATH_INFO => '/account/login' });
my $req2 = Plack::Request->new({ PATH_INFO => '/date/2000' });

cmpthese(
    -1, {
        'HTTP-Router' => sub {
            $hr->match('/account/login');
            $hr->match('/date/2000');
        },
        'Router-Simple' => sub {
            $rs->match('/account/login');
            $rs->match('/date/2000');
        },
        'HTTPx-Dispatcher' => sub {
            HD->match($req);
            HD->match($req2);
        },
    }
);