use Benchmark qw(cmpthese); use strict; use warnings; print "\n","Length of string: 10000\n"; for (1..20) { my $original; $original.= chr(int(rand(128))) for 1..1000; $original = $original x 10; cmpthese (100000,{ ref => sub { my $new = $original; by_ref(\$new) }, alias => sub { my $new = $original; by_alias($new) }, }); } sub by_alias { $_[0] =~ s/\s+//; } sub by_ref { ${ $_[0] } =~ s/\s+//; } #### my %data = (min_alias => 999999999, min_ref => 999999999); while (<>) { if (/^(\w+)\s+(\d+)\/s/) { my ($typ, $rate) = ($1,$2); $data{'min_'.$typ} = $rate if $data{'min_'.$typ} > $rate; $data{'max_'.$typ} = $rate if $data{'max_'.$typ} < $rate; } } print "$_ => $data{$_}\n" for sort keys %data;