added link to Biblio::Isis::Manual
[Biblio-Isis] / scripts / bench.pl
1 #!/usr/bin/perl -w
2
3 use strict;
4 use blib;
5
6 use Biblio::Isis;
7 use OpenIsis;
8 use MARC::File::USMARC;
9
10 use Benchmark qw( timethese cmpthese ) ;
11
12 my $isisdb = shift @ARGV || '/data/isis_data/ps/LIBRI/LIBRI';
13
14 my $isis = Biblio::Isis->new (
15         isisdb => $isisdb,
16         debug => shift @ARGV,
17 );
18
19 my $isis_filter = Biblio::Isis->new (
20         isisdb => $isisdb,
21         debug => shift @ARGV,
22         hash_filter => sub {
23                 my $v = shift;
24                 return lc($v);
25         }
26 );
27
28 my $rows = $isis->count;
29
30 my $db = OpenIsis::open( $isisdb );
31
32 print "rows: $rows\n\n";
33
34 my $mfn = 1;
35
36 my $r = timethese( -5, {
37         Isis => sub {
38                 $isis->fetch( $mfn++ % $rows + 1 );
39         },
40         Isis_hash => sub {
41                 $isis->to_hash( $mfn++ % $rows + 1 );
42         },
43         Isis_hash_filter => sub {
44                 $isis_filter->to_hash( $mfn++ % $rows + 1 );
45         },
46
47         OpenIsis => sub {
48                 OpenIsis::read( $db, $mfn++ % $rows + 1 );
49         },
50
51         OpenIsis_hash => sub {
52                 my $row = OpenIsis::read( $db, $mfn++ % $rows + 1 );
53                 my $rec;
54                 no strict 'refs';
55                 foreach my $f (keys %{$row}) {
56                         foreach my $v (@{$row->{$f}}) {
57                                 push @{$rec->{$f}}, OpenIsis::subfields($v);
58                         }
59                 }
60                 
61         },
62 } );
63 cmpthese $r;
64