Performance?
speedy
- perl
Hallo Forumler,
ich bastle z.Zt. ein wenig mit PERL und Textdatenbanken und wollte hier nur mal fragen, ob folgender Code effizient genug ist (für die Serverperformance). Das Script wird am Ende auf kleinen bis mittleren Webs betrieben, die keine megagrossen Besucherstürme erwarten dürften.
Hier der Code:
sub getdatabase
#Auslesen der CSV-Datenbank @datenbank in eine Tabellenstruktur (Hashs von Listen)
{
my @tempval; #temporäre Werteliste
#Feldliste erzeugen
$pattern = quotemeta $trenner;
@fields = split /$pattern/, $datenbank[0];
chomp @fields;
shift @datenbank; #Die erste Zeile mit den Bezeichnern fliegt raus
#Zeile für Zeile in Hash of Lists lesen
foreach $zeile (@datenbank)
{
#temporäre Werteliste anlegen; $pattern wird wiederverwendet
@tempval = split /$pattern/, $zeile;
chomp @tempval;
foreach $z1 (@fields)
{
#den Datensatz an %datenbank anhängen (Referenzen: Hash of Lists)
push @{ $datenbank{$z1} }, shift @tempval;
}
}
}
Diese Routine dient dazu, den Inhalt aus der Datenbankdatei (zeilenweise in @datenbank gespeichert) in eine Tabellenform %datenbank - ein Hash mit Listen - zu schreiben um dann über den Feldbezeichner und einer Nummer auf die Daten zugreifen zu können.
Vielen Dank für eure Hilfe
speedy
Hi Speedy,
deinen Code auf Performance hin durchzudenken ist mir jetzt echt zuviel Arbeit, auf den ersten Blick scheinen mir das aber ziemliche Standardoperationen zu sein.
Interessanter ist eh die Frage, ob Perl und Textdatenbank überhaupt geeignet ist. Das hängt nicht nur von der Anzahl der Besucher, sondern
auch von der Größe der Tabellen ab, allerdings vermute ich mal dass Du keinerlei Probleme haben solltest.
Genaue Werte sind schwer zu sagen, dafür fehlt mir auch die Erfahrung, aber rein gefühlsmässig, mit den
Besuchern gibt es wohl erst bei wirklichen Mengen Probleme, die Scripte laufen meist nur Bruchteile von Sekunden, und bis (rein geschätzt) 6000-7000 Datensätzen müsste
eine Perltextdatenbank auch noch mitmachen, solange Du keine zu komplexen Operationen drauf ausführst.
Gruss
Marko
Hi,
danke für die Antwort. Ich hab halt in PERL noch nicht soo die Routine und wollte nur mal sehen, ob der Stil halbwegs korrekt ist und nicht zu umständlich.
Ich werde mit dem Skript halt meine Erfahrungen machen müssen.
Danke nochmal
speedy