>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");