# perl -MO=Concise -e 'grep {defined} @array'
a <@> leave[1 ref] vKP/REFC ->(end)
1 <0> enter ->2
2 <;> nextstate(main 2 -e:1) v ->3
7 <|> grepwhile(other->8)[t2] vK/1 ->a
6 <@> grepstart K*/2 ->7
3 <0> pushmark s ->4
- <1> null lK/1 ->4
- <1> null sK/1 ->7
- <@> scope sK ->7
- <0> ex-nextstate v ->8
9 <1> defined sK/1 ->-
- <1> ex-rv2sv sK*/1 ->9
8 <$> gvsv(*_) s ->9
5 <1> rv2av[t1] lKM/1 ->6
4 <$> gv(*array) s ->5
# perl -MO=Concise -e 'grep defined, @array'
a <@> leave[1 ref] vKP/REFC ->(end)
1 <0> enter ->2
2 <;> nextstate(main 1 -e:1) v ->3
7 <|> grepwhile(other->8)[t2] vK/1 ->a
6 <@> grepstart K/2 ->7
3 <0> pushmark s ->4
- <1> null lK/1 ->4
9 <1> defined sK/1 ->7
- <1> ex-rv2sv sK*/1 ->9
8 <$> gvsv(*_) s ->9
5 <1> rv2av[t1] lKM/1 ->6
4 <$> gv(*array) s ->5
####
Rate short_block_ne short_bare_ne short_bare_len short_block_len
short_block_ne 3008231/s -- -0% -10% -20%
short_bare_ne 3014515/s 0% -- -10% -20%
short_bare_len 3342828/s 11% 11% -- -12%
short_block_len 3783871/s 26% 26% 13% --
Rate none_bare_len none_block_len none_bare_ne none_block_ne
none_bare_len 3390307/s -- -9% -11% -13%
none_block_len 3708523/s 9% -- -3% -5%
none_bare_ne 3807187/s 12% 3% -- -2%
none_block_ne 3885959/s 15% 5% 2% --
Rate long_bare_ne long_block_len long_block_ne long_bare_len
long_bare_ne 3635361/s -- -6% -6% -8%
long_block_len 3869054/s 6% -- -0% -2%
long_block_ne 3872708/s 7% 0% -- -2%
long_bare_len 3963159/s 9% 2% 2% --
####
#! /usr/bin/perl -w
use strict;
use Benchmark 'cmpthese';
my @none = ('a' .. 'm' );
my @short = ('a', '');
my @long = ('a' .. 'z', '');
my $iter = shift || -1;
print "block_ne : [$_]\n" for grep {$_ ne ''} @short;
print "block_len: [$_]\n" for grep {length} @short;
print "bare_ne : [$_]\n" for grep $_ ne '', @short;
print "bare_len : [$_]\n" for grep length, @short;
cmpthese(
$iter, {
short_block_ne => q{grep {$_ ne ''} @short},
short_block_len => q{grep {length} @short},
short_bare_ne => q{grep $_ ne '', @short},
short_bare_len => q{grep length, @short},
}
);
cmpthese(
$iter, {
none_block_ne => q{grep {$_ ne ''} @none},
none_block_len => q{grep {length} @none},
none_bare_ne => q{grep $_ ne '', @none},
none_bare_len => q{grep length, @none},
}
);
cmpthese(
$iter,{
long_block_ne => q{grep {$_ ne ''} @long},
long_block_len => q{grep {length} @long},
long_bare_ne => q{grep $_ ne '', @long},
long_bare_len => q{grep length, @long},
}
);