Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]10741[/thread]

Suche Architektur zum sparen von Rechnerleistung



<< >> 3 Einträge, 1 Seite
Froschpopo
 2007-11-07 23:11
#102008 #102008
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Ich habe ein etwas größeres Programm das oft auf mySQL zugreifen muss.
Ich möchte nicht in jeder Funktion ein eigenes Statement ausführen das ich häufiger benötige. Deshalb arbeite ich häufig verwendete Anfragen in einer zentralen Funktion ab und schleppe dann die Referenz immer hinter mir her durch die einzelnen Funktionen.
Das sieht dann also so aus:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
sub basics {
my $funktion = shift; # funktionsreferenz auf &beispielfunktion
my %params = (.. alles was ich öfters benötige wie zB Objektreferenzen, $dbh, Treiberkonfiguration usw)
$funktion->(\%params);
}

sub beispielfunktion {
my $args = shift;
print "hallo ",$args->{'username'};
print "du bist ",$args->{'DBH'}->selectrow_array("SELECT username FROM users WHERE id = '$args->{id}'");

&weiter_gehts($args);
}


Nun habe ich eine andere Idee: Ich möchte häufig verwendete Daten wie z.B.
$dbh, Referenzen, Username (ermittelt aus einer mySQl Abfrage), usw. in einem Modul "cachen", sodass ich diese nicht ständig mit mir rumschleppen muss.
Ich stelle mir das dann so vor, dass ich z.b. mit MyProgram::refs() auf meine ganzen Referenzen zugreifen kann.

Ist sowas üblich und wenn ja, wie schaffe ich es, dass die Daten im Modul erhalten bleiben?
pq
 2007-11-08 10:57
#102016 #102016
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
mit einem guten objektorientierten design musst du die daten nicht "rumschleppen".
schau dir an, wie diverse frameworks das machen. da kriegen methoden ein context-objekt
als argument und vielleicht noch ein argument mehr, und das wars dann. im context steht
alles drin, was man braucht. und es ist auch kein rumschleppen, da lediglich eine
referenz uebergeben wird. die ist leicht und belastet nicht.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Froschpopo
 2007-11-08 17:26
#102050 #102050
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Achso, also dann mache ich quasi ein objekt und speichere den ganzen kram in diesem $self-Hash. Im Script muss ich dann nur noch die Objektreferenz mitschleppen. Gute Idee.
<< >> 3 Einträge, 1 Seite



View all threads created 2007-11-07 23:11.