sub monk1 {
my( $arg, @data ) = @_;
## do stuff
return @results;
}
sub monk2 {
my( $arg, @data ) = @_;
## do stuff
return @results;
}
....
my @data = (....);
cmpthese -3, {
monk1 => sub{ my @results = monk1( @data ); },
monk2 => sub{ my @results = monk2( @data ); },
....
};
####
10 items
Rate sub_block_short sub_list_short
sub_block_short 305975/s -- -4%
sub_list_short 319968/s 5% --
####
10 items
Rate eval_block_short eval_list_short
eval_block_short 322569/s -- -1%
eval_list_short 325028/s 1% --
####
10 items
Rate sub_blk_sh sub_lst_sh eval_blk_sh eval_lst_sh
sub_blk_sh 305975/s -- -4% -5% -6%
sub_lst_sh 319968/s 5% -- -1% -2%
eval_blk_sh 322569/s 5% 1% -- -1%
eval_lst_sh 325028/s 6% 2% 1% --
####
100_000 items
Rate eval_blk_vl sub_blk_vl eval_lst_vl sub_lst_vl
eval_blk_vl 36.4/s -- -1% -3% -4%
sub_blk_vl 36.6/s 1% -- -2% -3%
eval_lst_vl 37.4/s 3%* 2% -- -1%
sub_list_vl 37.8/s 4% 3%* 1% --
####
#! perl -slw
use strict;
use Benchmark qw[ cmpthese ];
our @short = 1 .. 10;
our @medium = 1 .. 100;
our @long = 1 .. 1000;
our @vlong = 1 .. 100_000;
print "10 items";
cmpthese -3, {
eval_list_short => q[ my @results = grep $_ <= 5, @short; ],
eval_block_short => q[ my @results = grep{ $_ <= 5 } @short; ],
sub_list_short => sub{ my @results = grep $_ <= 5, @short; },
sub_block_short => sub{ my @results = grep{ $_ <= 5 } @short; },
};
print "\n100 items";
cmpthese -3, {
eval_list_medium => q[ my @results = grep $_ <= 50, @medium; ],
eval_block_medium => q[ my @results = grep{ $_ <= 50 } @medium; ],
sub_list_medium => sub{ my @results = grep $_ <= 50, @medium; },
sub_block_medium => sub{ my @results = grep{ $_ <= 50 } @medium; },
};
print "\n1000 items";
cmpthese -3, {
eval_list_long => q[ my @results = grep $_ <= 500, @long; ],
eval_block_long => q[ my @results = grep{ $_ <= 500 } @long; ],
sub_list_long => sub{ my @results = grep $_ <= 500, @long; },
sub_block_long => sub{ my @results = grep{ $_ <= 500 } @long; },
};
print "\n100_000 items";
cmpthese -3, {
eval_list_vlong => q[ my @results = grep $_ <= 50000, @vlong; ],
eval_block_vlong => q[ my @results = grep{ $_ <= 50000 } @vlong; ],
sub_list_vlong => sub{ my @results = grep $_ <= 50000, @vlong; },
sub_block_vlong => sub{ my @results = grep{ $_ <= 50000 } @vlong; },
};
__END__
C:\test>538622
10 items
Rate sub_block_short sub_list_short eval_block_short eval_list_short
sub_block_short 305975/s -- -4% -5% -6%
sub_list_short 319968/s 5% -- -1% -2%
eval_block_short 322569/s 5% 1% -- -1%
eval_list_short 325028/s 6% 2% 1% --
100 items
Rate eval_block_medium sub_block_medium eval_list_medium sub_list_medium
eval_block_medium 36772/s -- -1% -5% -6%
sub_block_medium 37156/s 1% -- -4% -5%
eval_list_medium 38546/s 5% 4% -- -1%
sub_list_medium 39104/s 6% 5% 1% --
1000 items
Rate sub_block_long eval_block_long sub_list_long eval_list_long
sub_block_long 3879/s -- -0% -3% -4%
eval_block_long 3889/s 0% -- -2% -3%
sub_list_long 3989/s 3% 3% -- -1%
eval_list_long 4027/s 4% 4% 1% --
100_000 items
Rate eval_block_vlong sub_block_vlong eval_list_vlong sub_list_vlong
eval_block_vlong 36.4/s -- -1% -3% -4%
sub_block_vlong 36.6/s 1% -- -2% -3%
eval_list_vlong 37.4/s 3% 2% -- -1%
sub_list_vlong 37.8/s 4% 3% 1% --