Ambrosia

 view release on metacpan or  search on metacpan

benchmark/Ambrosia/BaseManager.b  view on Meta::CPAN

#!/usr/bin/perl -w
use warnings;
use strict;
use lib qw(lib t);
use Benchmark;

use Ambrosia::Context;
instance Ambrosia::Context( engine_name => 'CGI', engine_params => {} );
Context->start_session();

use Ambrosia::BaseManager;


my %conf = (
    base => {
            manager => 't::BaseManager',
            access   => 0,
        },
    forward => {
            manager => 't::ForwardManager',
            access   => 0,
        },
    forward_base => {
            manager => 't::ForwardBaseManager',
            access   => 0,
        },
    relegate => {
            manager => 't::RelegateManager',
            access   => 0,
        },
);

local $ENV{TEST_BASE_MANAGER} = [];
controller( __managers => \%conf );

my $NUM_ITER = 100_000;
timethese($NUM_ITER, {
    'relegate' => sub {
            $ENV{TEST_BASE_MANAGER} = [];
            controller->relegate('relegate');
            controller->next_manager->process;
            controller->next_manager->process;
        },
});

timethese($NUM_ITER, {
    'relegate2' => sub {
            $ENV{TEST_BASE_MANAGER} = [];
            controller->relegate('relegate');
            for(; controller->next_manager->process; ){};
        },
});



( run in 1.058 second using v1.01-cache-2.11-cpan-5a3173703d6 )