#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
my $count = 0;
my %hasHierarchy;
$hasHierarchy{$_} = $count++ foreach @ARGV;
while( my( $key, $value ) = each %hasHierarchy ){
print "$key: $value\n";
}
# print Dumper \%hasHierarchy;
__END__
$ perl test.pl POPE PATRIARCH ARCHBISHOP CARDINAL
POPE: 0
CARDINAL: 3
ARCHBISHOP: 2
PATRIARCH: 1
####
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
# use Benchmark qw(:all) ; # WindowsOS
use Benchmark::Forking qw( timethese cmpthese ); # UnixOS
sub whileLoop {
my $localCount = 0;
my %localHasHierarchy;
while (defined(my $input = shift (@_))) {
$localHasHierarchy{$input} = $localCount++;
}
return \%localHasHierarchy;
}
sub foreachLoop {
my $localCount = 0;
my %localHasHierarchy;
$localHasHierarchy{$_} = $localCount++ foreach (@_);
return \%localHasHierarchy;
}
# print Dumper whileLoop(@ARGV);
# print Dumper foreachLoop(@ARGV);
my $results = timethese(-10,
{ 'While' => sub { whileLoop(@ARGV) },
'Foreach' => sub { foreachLoop(@ARGV) } },
'none');
cmpthese( $results );
__END__
$ perl test.pl POPE PATRIARCH ARCHBISHOP CARDINAL
Rate While Foreach
While 719936/s -- -19%
Foreach 889776/s 24% --
####
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
# use Benchmark qw(:all) ; # WindowsOS
use Benchmark::Forking qw( timethese cmpthese ); # UnixOS
sub whileLoop {
my $localCount = 0;
my %localHasHierarchy;
while (defined($_ = shift (@_))) {
$localHasHierarchy{$_} = $localCount++;
}
return \%localHasHierarchy;
}
sub foreachLoop {
my $localCount = 0;
my %localHasHierarchy;
$localHasHierarchy{$_} = $localCount++ for (@_);
return \%localHasHierarchy;
}
# print Dumper whileLoop(@ARGV);
# print Dumper foreachLoop(@ARGV);
my $results = timethese(-10,
{ 'While' => sub { whileLoop(@ARGV) },
'Foreach' => sub { foreachLoop(@ARGV) } },
'none');
cmpthese( $results );
__END__
$ perl test.pl POPE PATRIARCH ARCHBISHOP CARDINAL
Rate While Foreach
While 739404/s -- -17%
Foreach 893518/s 21% --