Hashspeicher im Voraus bereitstellen ?
Claudio
- perl
Hallo,
kurze Frage:
Wenn ich bei einem Hash die Anzahl der Schlüssel im Voraus bereitstelle, diese Anzahl aber versehnlichst zu klein gewählt wurde, wird dann der Hash von Perl dennoch dynamisch vergrössert beim Einfügen weiterer Schlüssel oder bricht das Skript mit einer Fehlermeldung ab ?
Vielen Dank,
Claudio
Hallo,
kurze Antwort:
Perl gibt erst auf, wenn es vom System keinen Speicher mehr kriegt.
Bert
Hallo Claudio.
Wenn ich bei einem Hash die Anzahl der Schlüssel im Voraus bereitstelle, diese Anzahl aber versehnlichst zu klein gewählt wurde, wird dann der Hash von Perl dennoch dynamisch vergrössert beim Einfügen weiterer Schlüssel oder bricht das Skript mit einer Fehlermeldung ab ?
Meinst du sowas:
my $anz = 1000;
my %new_hash;
keys(%my_hash) = $anz;
Perl reserviert m.W.n. den erforderlichen Mehrspeicher, falls du mehr als 1000 Elemente in deinem Hash hast ("Perl nimmt sich, was es braucht, bis nichts mehr da ist"). Btw, in obigem Beispiel wird nicht für 1000, sondern für 1024 Schlüssel Speicher reserviert (siehe perlfunc -f keys) Übrigens ist es sehr fraglich, ob du mit obigem Code tatsächlich die Performance des Scriptes erhöhst.
Freundschaft!
Siechfred
Hallo Claudio,
Wenn ich bei einem Hash die Anzahl der Schlüssel im Voraus bereitstelle, [...]
Es ist Humbug sowas zu tun und macht das Script nur langsamer. Wenn du eine Hash-Tabelle
anlegst, dann wird eh schon ein gewisser Teil des Speichers belegt. Und ja, der waechst
dynamisch mit dem Fuellungsgrad der Tabelle.
Grüße,
CK