Schrift
[thread]7069[/thread]

hash-größe



<< >> 10 Einträge, 1 Seite
norman
 2005-06-22 18:20
#55672 #55672
User since
2004-03-11
46 Artikel
BenutzerIn
[default_avatar]
hallo,

gibt es eine begrenzung für hashes in perl: max. einträge, max. bytes, max. ram?

ich beobachte in meinem programm ein absinken der performance von über 1000% wenn der hash scheinbar eine bestimmte größe erreicht. zur zeit kann ich noch nicht spezifizieren was "bestimmte größe" bedeutet. (der hash hat ca. 55000 einträge)

gruß,
norman
lichtkind
 2005-06-22 18:48
#55673 #55673
User since
2004-03-22
5697 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
ja weil er jedesmal umdisponieren muss, bei sehr grossen hashes würd ich vorher grossen bedarf anmelden per

keys %hash grösse;

dann wird perl weniger arbeit haben. die grenze dürfte nur der ram sein also die grösse der aulagerungsdatei des OS
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
norman
 2005-06-22 19:10
#55674 #55674
User since
2004-03-11
46 Artikel
BenutzerIn
[default_avatar]
hi lichtkind!

danke für den hinweis! kannst du mir dazu ein konkretes beispiel geben (code)?

norman
Strat
 2005-06-22 19:17
#55675 #55675
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
die groesse haengt nur vom betriebssystem ab; bei gaengigen 32-bit-systemen gibt es i.d.R. eine Grenze von 2GB/Prozess (bei 2k/XP/2003 kann man die meistens mit dem Bootflag /3GB erhoehen).

Zusaetzlich kommt noch das Problem der Speicherfragmentierung dazu; im Extremfall kann auch schon mal bei 1.4 GB ende sein, und es gibt einen Out-Of-Memory-Error.
Man kann neuere Perls so compilieren, dass sie sich dann noch ein bisschen Ram reservieren, damit man auf diese Art von Fehlern reagieren kann.
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
lichtkind
 2005-06-22 19:19
#55676 #55676
User since
2004-03-22
5697 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
hab ich doch

keys %hash 10000;

^ ^ ^
befehlt deine variable grösse in speicherzellen
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
supersucker
 2005-06-22 19:28
#55677 #55677
User since
2005-03-17
118 Artikel
BenutzerIn
[default_avatar]
hallo,

ich versteh dein beispiel aber auch nicht ganz, wo muss denn diese anweisung stehen? du meinst sowas wie:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/perl

use warnings;
use strict;

my %hash = ();
keys %hash 10000;

while() {
# fill hash
}


oder?
norman
 2005-06-22 19:31
#55678 #55678
User since
2004-03-11
46 Artikel
BenutzerIn
[default_avatar]
my %hash;
keys %hash 10000; # für 10000 einträge oder 10000 byte?\n\n

<!--EDIT|norman|1119454401-->
lichtkind
 2005-06-22 19:37
#55679 #55679
User since
2004-03-22
5697 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
einträge natürlich
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
norman
 2005-06-22 19:42
#55680 #55680
User since
2004-03-11
46 Artikel
BenutzerIn
[default_avatar]
hier die doku:
http://perldoc.perl.org/functions/keys.html

Code: (dl )
keys %content_hash = 65000;
\n\n

<!--EDIT|norman|1119455707-->
lichtkind
 2005-06-22 21:10
#55681 #55681
User since
2004-03-22
5697 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
stimmt hab ich in meiner referenz überlesen
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
<< >> 10 Einträge, 1 Seite



View all threads created 2005-06-22 18:20.