use strict; use warnings; use Benchmark qw( cmpthese ); my @none = ('a' .. 'm' ); my @short = ('a', ''); my @long = ('a' .. 'z', ''); my $iter = shift || -3; cmpthese( $iter, { short_block_ne => sub { my @a = grep {$_ ne ''} @short; 1 }, short_block_len => sub { my @a = grep {length} @short; 1 }, short_bare_ne => sub { my @a = grep $_ ne '', @short; 1 }, short_bare_len => sub { my @a = grep length, @short; 1 }, } ); cmpthese( $iter, { none_block_ne => sub { my @a = grep {$_ ne ''} @none; 1 }, none_block_len => sub { my @a = grep {length} @none; 1 }, none_bare_ne => sub { my @a = grep $_ ne '', @none; 1 }, none_bare_len => sub { my @a = grep length, @none; 1 }, } ); cmpthese( $iter,{ long_block_ne => sub { my @a = grep {$_ ne ''} @long; 1 }, long_block_len => sub { my @a = grep {length} @long; 1 }, long_bare_ne => sub { my @a = grep $_ ne '', @long; 1 }, long_bare_len => sub { my @a = grep length, @long; 1 }, } );