>perl -MO=Concise,f -e"sub f { return $x }"
main::f:
5 <1> leavesub[1 ref] K/REFC,1 ->(end)
- <@> lineseq KP ->5
1 <;> nextstate(main 1 -e:1) v ->2
4 <@> return K ->5
2 <0> pushmark s ->3
- <1> ex-rv2sv sK/1 ->4
3 <#> gvsv[*x] s ->4
-e syntax OK
####
main::f:
3 <1> leavesub[1 ref] K/REFC,1 ->(end)
- <@> lineseq KP ->5
1 <;> nextstate(main 1 -e:1) v ->2
- <@> ex-return K ->-
- <0> ex-pushmark s ->-
- <1> ex-rv2sv sK/1 ->-
2 <#> gvsv[*x] s ->3
-e syntax OK
####
>perl -MO=Concise,f -e"sub f { $x }"
main::f:
3 <1> leavesub[1 ref] K/REFC,1 ->(end)
- <@> lineseq KP ->3
1 <;> nextstate(main 1 -e:1) v ->2
- <1> ex-rv2sv sK/1 ->-
2 <#> gvsv[*x] s ->3
-e syntax OK
####
5.8.8:
Rate implicit explicit
implicit 980/ms -- -0%
explicit 984/ms 0% --
5.10.0:
Rate explicit implicit
explicit 1000/ms -- -0%
implicit 1004/ms 0% --
####
use strict;
use warnings;
use Benchmark qw( cmpthese );
my $OUTER = $ARGV[0] || -3;
my $INNER = $ARGV[1] || 1000;
sub explicit { return $_[0] }
sub implicit { $_[0] }
my %tests = map { $_ => "use strict;
use warnings;
for (1..$INNER) {
my \$rv = $_(1);
}
"
}
qw( explicit implicit );
cmpthese($OUTER, \%tests);
print("\n");
print("Multiply by $INNER to get real rate.\n");