use save_row and load_row to share data between lookups
authorDobrica Pavlinusic <dpavlin@rot13.org>
Wed, 25 Oct 2006 18:54:45 +0000 (18:54 +0000)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Wed, 25 Oct 2006 18:54:45 +0000 (18:54 +0000)
and input->fetch, added some timing for loading of lookups
which revealed a big performance impact of one debug(dump())

git-svn-id: svn+ssh://mjesec/home/dpavlin/svn/webpac2/trunk@762 07558da8-63fa-0310-ba24-9fe276d99e06

run.pl

diff --git a/run.pl b/run.pl
index 3de6189..118215f 100755 (executable)
--- a/run.pl
+++ b/run.pl
@@ -8,8 +8,8 @@ use lib './lib';
 
 use WebPAC::Common 0.02;
 use WebPAC::Parser 0.08;
-use WebPAC::Input 0.13;
-use WebPAC::Store 0.11;
+use WebPAC::Input 0.14;
+use WebPAC::Store 0.14;
 use WebPAC::Normalize 0.22;
 use WebPAC::Output::TT;
 use WebPAC::Validate 0.06;
@@ -350,13 +350,6 @@ while (my ($database, $db_config) = each %{ $config->databases }) {
                                my $rec = shift || die "need rec!";
                                my $mfn = $rec->{'000'}->[0] || die "need mfn in 000";
 
-                               $store->save_row(
-                                       database => $database,
-                                       input => $input_name,
-                                       id => $mfn,
-                                       row => $rec,
-                               );
-
                                WebPAC::Normalize::data_structure(
                                        row => $rec,
                                        rules => $rules,
@@ -380,6 +373,24 @@ while (my ($database, $db_config) = each %{ $config->databases }) {
                        lookup_coderef => $lookup_coderef,
                        lookup => $lookup_jar,
                        %{ $input },
+                       load_row => sub {
+                               my $a = shift;
+                               return $store->load_row(
+                                       database => $database,
+                                       input => $input_name,
+                                       id => $a->{id},
+                               );
+                       },
+                       save_row => sub {
+                               my $a = shift;
+                               return $store->save_row(
+                                       database => $database,
+                                       input => $input_name,
+                                       id => $a->{id},
+                                       row => $a->{row},
+                               );
+                       },
+
                );
 
                my $lookup_data = WebPAC::Normalize::_get_lookup();
@@ -436,17 +447,19 @@ while (my ($database, $db_config) = each %{ $config->databases }) {
                        foreach my $db (keys %$depends) {
                                foreach my $i (keys %{$depends->{$db}}) {
                                        foreach my $k (keys %{$depends->{$db}->{$i}}) {
+                                               my $t = time();
                                                $log->debug("loading lookup $db/$i");
                                                $lookup_hash->{$db}->{$i}->{$k} = $store->load_lookup(
                                                        database => $db,
                                                        input => $i,
                                                        key => $k,
                                                );
+                                               $log->debug(sprintf("lookup $db/$i took %.2fs", time() - $t));
                                        }
                                }
                        }
 
-                       $log->debug("lookup_hash = ", dump( $lookup_hash ));
+                       $log->debug("lookup_hash = ", sub { dump( $lookup_hash ) });
                }