sub hash_style2 {
my %values;
my @temp = @master;
push @{$values{substr($_,0,1)}}, substr($_,2)
for @temp;
print "@{$values{a}} <==> @{$values{b}}\n" if $testing;
}
sub ikegami {
my @temp = @master;
local $_ = "@temp";
my @a = /\ba_(\d+)\b/g;
my @b = /\bb_(\d+)\b/g;
print "@a <==> @b\n" if $testing;
}
When I rerun adding this method (removing the three worst performers), here's what I get:
Rate Trinary New_Grep Original ikegami Hash2 Tri_Substr
+ Switch Tri_Substr2
Trinary 10273/s -- -5% -22% -34% -40% -41%
+ -41% -50%
New_Grep 10766/s 5% -- -18% -31% -37% -38%
+ -38% -48%
Original 13096/s 27% 22% -- -16% -23% -25%
+ -25% -37%
ikegami 15683/s 53% 46% 20% -- -8% -10%
+ -10% -24%
Hash2 17016/s 66% 58% 30% 8% -- -2%
+ -3% -18%
Tri_Substr 17437/s 70% 62% 33% 11% 2% --
+ -0% -16%
Switch 17453/s 70% 62% 33% 11% 3% 0%
+ -- -15%
Tri_Substr2 20651/s 101% 92% 58% 32% 21% 18%
+ 18% --
Changing to substr() brings the hash into respectable range.
Being right, does not endow the right to be rude; politeness costs nothing.
Being unknowing, is not the same as being stupid.
Expressing a contrary opinion, whether to the individual or the group, is more often a sign of deeper thought than of cantankerous belligerence.
Do not mistake your goals as the only goals; your opinion as the only opinion; your confidence as correctness. Saying you know better is not the same as explaining you know better.