[Dresden-pm] Speicherverbrauch

Steffen Winkler steffen.winkler at gmx.net
Die Jul 29 16:46:24 CDT 2003


Bei so großen Hashes ist es günstiger anstatt [42, 'egal'] die Werte erst
mit  pack() zu verarbeiten, denn Perl muß Zusatzinformationen über den
ursprünglichen Hash und die eingehängten Arrays speichern, denn neben den
Werten kennt die Perl-Variable ja auch den Typ, die Länge, den Grad der
Verseuchung usw.. Diese Informationen müssen für jeden Wert im Array für das
Array selbst und natürlich für den Hash gehalten werden, durch Pack bleibt
nur noch der Hash und ein Wert übrig.


Steffen Winkler
Hohlweg 23
D - 09306 Seelitz

Telefon: +49 (0)3737   77 16 17
Telefax: +49 (0)1212   5 11 71 89 86

e-Mail: info at steffen-winkler.de
url: http://www.steffen-winkler.de
-----Ursprüngliche Nachricht-----
Von: Torsten Werner <twerner-perl at vwisb7.vkw.tu-dresden.de>
An: dresden-pm at mail.pm.org <dresden-pm at mail.pm.org>
Datum: Dienstag, 29. Juli 2003 20:01
Betreff: [Dresden-pm] Speicherverbrauch


>Hallo,
>
>folgendes Programm:
>
>   my %hash;
>   for(1 .. 1000000) {
>      $hash{$_} = [ 42, 'egal' ];
>   }
>   system 'ps v';
>
>speichert pro Hashelement netto etwa 12 Byte an Daten. Perl verbraucht
>aber insgesamt 200 MB, also 200 Byte pro Hashelement. Woran liegt diese
>immense Speicherverschwendung? Kann man irgendwas dran drehen?
>
>Tschüss,
>Torsten
>
>--
>Torsten Werner                                          +49 162 3123004
>email at twerner42.de                              http://www.twerner42.de
>
>_______________________________________________
>Dresden-pm mailing list
>Dresden-pm at mail.pm.org
>http://mail.pm.org/mailman/listinfo/dresden-pm
>