benchmark hash creation for various implementations
[Biblio-Isis] / scripts / bench.pl
index e7e130b..ae79854 100755 (executable)
@@ -16,6 +16,15 @@ my $isis = IsisDB->new (
        debug => shift @ARGV,
 );
 
+my $isis_filter = IsisDB->new (
+       isisdb => $isisdb,
+       debug => shift @ARGV,
+       hash_filter => sub {
+               my $v = shift;
+               return lc($v);
+       }
+);
+
 my $rows = $isis->{'maxmfn'};
 
 my $db = OpenIsis::open( $isisdb );
@@ -28,9 +37,28 @@ my $r = timethese( -5, {
        IsisDB => sub {
                $isis->fetch( $mfn++ % $rows + 1 );
        },
+       IsisDB_hash => sub {
+               $isis->to_hash( $mfn++ % $rows + 1 );
+       },
+       IsisDB_hash_filter => sub {
+               $isis_filter->to_hash( $mfn++ % $rows + 1 );
+       },
+
        OpenIsis => sub {
                OpenIsis::read( $db, $mfn++ % $rows + 1 );
        },
+
+       OpenIsis_hash => sub {
+               my $row = OpenIsis::read( $db, $mfn++ % $rows + 1 );
+               my $rec;
+               no strict 'refs';
+               foreach my $f (keys %{$row}) {
+                       foreach my $v (@{$row->{$f}}) {
+                               push @{$rec->{$f}}, OpenIsis::subfields($v);
+                       }
+               }
+               
+       },
 } );
 cmpthese $r;