benchmark hash creation for various implementations
authorDobrica Pavlinusic <dpavlin@rot13.org>
Wed, 29 Dec 2004 20:11:34 +0000 (20:11 +0000)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Wed, 29 Dec 2004 20:11:34 +0000 (20:11 +0000)
git-svn-id: file:///home/dpavlin/svn/Biblio-Isis/trunk@14 4670fa4d-42ec-0310-ab5b-a66af6943492

Makefile.PL
scripts/bench.pl

index aea7200..b1f2135 100644 (file)
@@ -36,5 +36,8 @@ cmp:
        time ./scripts/dump_isis.pl > isis.txt
        time ./scripts/dump_openisis.pl > openisis.txt
 
+bench: all
+       cd ./scripts/ && ./bench.pl
+
 MAKE_MORE
 }
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;