[Vienna-pm] Vars in sub max {..}
peter pilsl
pilsl at goldfisch.at
Fri Feb 3 05:11:18 PST 2006
Carl A. Schreiber wrote:
>>
> hmm - aber Danke! -
> das würde bedeuten, diese Version ohne Hilfsvariablen wäre bei eine
> 24h-7d-Programm besser?
> sub max {
> $_[0] = pop;
> foreach ( @_ ) { $_[0] = $_ if ($_ > $_[0]) }
> }
?? warum ...
deine alte version ist perfekt. perl kümmert sich darum, dass der
speicher intern effektiv verwaltet wird und dein OS kümmert sich darum,
dass perl genug speicher bekommt.
kritisch wirds, wenn du extrem grosse speicherplätze in perl allokierst,
freigibts und die dann augenblicklich von einer anderen applikation
benötigt werden. Oder wenn du so komplexe speicherstrukturen hast, dass
die perl-GC damit überfordert ist.
Für den Hausebrauch wie eine max-funktion ist das alles nix, wo man dran
denken muss.
Du kannst das alles sehr gut selbst nachvollziehen, indem du dein
programm absichtlich verbösest, indem du zB in der max-funktion extrem
viel speicher allokierst ala $a[100000000]=1; (die nullen bitte
nachzählen) und wieder freigibts und die adressen der
allokierten/definierten variablen anschaust und die mem-entwicklung
parallel.
spannend hier auch: dein OS sagt die wieviel mem dein perl gerade
zugeteilt hat. wieviel davon aber perl intern schon wieder freigegeben
hat, weisst du nicht. Aber du kannst davon ausgehen, dass perl intern
da sehr schlau ist und ich hab im ggs. zu unkenrufen die erfahrung
gemacht, dass perl freien speicher auch relativ schnell wieder an das OS
retourniert.
lgp
More information about the Vienna-pm
mailing list