#! 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% --