Thread Hash Schlüssel zu Wert finden (13 answers)
Opened by falke13 at 2011-05-17 09:02

payx
 2011-05-23 18:31
#149060 #149060
User since
2006-05-04
564 Artikel
BenutzerIn

user image
Hallo Taulmarill,

wirklich nur aus Neugier: Mit einem sehr großen Hash dreht sich der Effekt um.

Wenn ich in Zeile 9 Deines Scripts einfüge:
Code (perl): (dl )
$landab{'austria'.$_} = 'a'.$_ for (1..1e5);

, dann erhalte ich z.B.:
Code: (dl )
1
2
3
       Rate hash anon
hash 3.17/s -- -10%
anon 3.51/s 11% --

Bei einem zweiten, manuellen Benchmark beobachte ich den Speicherverbrauch nach Erzeugung des Hashes, dann nach Ermittlung des {a}-Wertes.

Hier gewinnt ebenfalls regelmäßig der anonyme Hash, allerdings ist der Unterschied auch hier nicht sehr groß; der anonyme Hash wird offenbar in voller Größe erzeugt.

Hier der Code ab Zeile 9 (d.h. nach der obigen Zeile):

Code (perl): (dl )
1
2
3
4
5
6
7
print "RAM-Verbrauch des Perl-Prozesses erstmals ermitteln, [Enter]\n";
<>;
#my %abland = reverse %landab;
#my $aland = $abland{a};
my $aland = {reverse %landab}->{a};
print "RAM-Verbrauch des Perl-Prozesses zum zweiten Mal ermitteln, [Enter]\n";
<>;
So wird anon getestet, mit Zeile 3 und 4 (und 5 auskommentiert) hash.

Ergebnis z.B.:

Code: (dl )
1
2
hash 16,4 MB => 34,1 MB
anon 16,4 MB => 33,6 MB

Mein Fazit: TIMTOWTDI. In der Regel dürfte es ziemlich egal sein, wie man hier verfährt.

Grüße
payx

View full thread Hash Schlüssel zu Wert finden