sub id_parse {
my $string = shift;
return split( /\./, $string, 2 );
}
####
sub id_parse {
my $string = shift;
my( $id, $session ) = split /\./, $string, 2;
$id =~ tr/a-z/A-Z/;
return( $id, $session );
}
##
##
#!/usr/bin/perl
use strict;
use warnings;
use Benchmark qw/:all/;
my $TIMES = 500000;
my $upper_id_string = "ABCD1EFGHI2J.a01f2345b067cde890f12gab345678c9";
my $lower_id_string = "abcd1efghi2j.a01f2345b067cde890f12gab345678c9";
sub only_tr {
my $string = shift;
my( $id, $session ) = split( /\./, $string, 2 );
$id =~ tr/a-z/A-Z/;
return( $id, $session );
}
sub old {
my $string = shift;
return split( /\./, $string, 2 );
}
my $only_tr_low = sub { my( $id, $session )
= only_tr( $lower_id_string ) };
my $only_tr_upp = sub { my( $id, $session )
= only_tr( $upper_id_string ) };
my $old_low = sub { my( $id, $session )
= match_and_tr( $lower_id_string ) };
my $old_upp = sub { my( $id, $session )
= match_and_tr( $upper_id_string ) };
cmpthese( $TIMES, {
'Old way ' => $old_low,
'Only TR LC' => $only_tr_low,
},
);
cmpthese( $TIMES, {
'Only TR UC' => $only_tr_upp,
'Old way U' => $old_upp,
},
);
##
##
Rate Old way Only TR LC
Old way 280899/s -- -21%
Only TR LC 357143/s 27% --
Rate Old way U Only TR UC
Old way U 340136/s -- -4%
Only TR UC 354610/s 4% --
##
##
sub micro {
my $string = shift;
my( $id, $session ) = split( /\./, $string, 2 );
return( $id, $session );
}
##
##
Rate Old way Only TR LC Micro Optm
Old way 277778/s -- -21% -28%
Only TR LC 352113/s 27% -- -9%
Micro Optm 387597/s 40% 10% --
Rate Old way U Only TR UC Micro OptU
Old way U 340136/s -- -4% -12%
Only TR UC 354610/s 4% -- -8%
Micro OptU 384615/s 13% 8% --
##
##
$ perl -MO=Concise -e '
sub foo {
my $string = shift;
my( $id, $sess ) = split( /\./, $string, 2 );
return( $id, $sess );
}
foo( "abcd1efghi2j.a01f2345b067cde890f12gab345678c9" );'
7 <@> leave[1 ref] vKP/REFC ->(end)
1 <0> enter ->2
2 <;> nextstate(main 4 -e:1) v ->3
6 <1> entersub[t2] vKS/TARG,1 ->7
- <1> ex-list K ->6
3 <0> pushmark s ->4
4 <$> const[PV "abcd1efghi2j.a01f2345b067cde890f12gab345678c9"] sM ->5
- <1> ex-rv2cv sK/1 ->-
5 <#> gv[*foo] s ->6
-e syntax OK
$ perl -MO=Concise -e '
sub foo {
my $string = shift;
return split( /\./, $string, 2 );
}
foo( "abcd1efghi2j.a01f2345b067cde890f12gab345678c9" );'
7 <@> leave[1 ref] vKP/REFC ->(end)
1 <0> enter ->2
2 <;> nextstate(main 3 -e:1) v ->3
6 <1> entersub[t2] vKS/TARG,1 ->7
- <1> ex-list K ->6
3 <0> pushmark s ->4
4 <$> const[PV "abcd1efghi2j.a01f2345b067cde890f12gab345678c9"] sM ->5
- <1> ex-rv2cv sK/1 ->-
5 <#> gv[*foo] s ->6
-e syntax OK
##
##
s**lil*; $*=join'',sort split q**; s;.*;grr; &&s+(.(.)).+$2$1+; $; =
qq-$_-;s,.*,ahc,;$,.=chop for split q,,,reverse;print for($,,$;,$*,$/)