Zna się ktoś na prel'u ?
Przemysław Iskra
sparky w servek.sparky.homelinux.org
Nie, 12 Gru 2004, 15:26:24 CET
Bo ja niebardzo...
Ale jest sobie coś takiego:
#v+
#!/usr/bin/perl
use strict;
sub decomposespec {
my $file=$_[0];
open F_IN, "$file";
while (<F_IN>) {
print "$_";
#last;
}
close F_IN;
}
my $specdir="/home/users/sparky/pld-cvs/SPECS";
opendir DIR, "$specdir";
foreach( sort readdir DIR ) {
next unless /.spec$/;
decomposespec("$specdir/metisse.spec");
}
closedir DIR;
#v-
czyli około 8000 razy otwiera plik, wypisuje i zamyka
pod koniec działania program ten zajmuje ~30MB pamięci (przy większym
pliku więcej)
to się robi jakaś historia zmiennych czy coś ?
o cache pliku niema mowy, bo to przecież cały czas ten sam plik;
jak wewnątrz while odkomentuje się #last to zużywa tyle samo ramu,
a jak poprostu się napisze: print <F_IN>; zamiast całego while to
ilość zużywanej pamięci nie wzrasta, jest około 2MB cały czas
nie rozumiem tego, jakiś buffer jest ? to jak go wyczyścić ?
a może błąd w perlu ? (perl-base-5.8.6-2)
P.S. w czasie pisania tego listu wpadło mi do głowy: zamiast while
użyłem foreach, program działa z zamierzonym efektem a pamięci nie
zżera; z tym while jest coś nietak ?
--
____ Sparky{PI] -- Przemyslaw _ ___ _ _ ..Mail,MSN LANG...Pl..Ca..Es..En
/____) ___ ___ _ _ || Iskra | | _ \| | | : GG...3228100 WWW..NotYetAvible
\____\| -_)'___| ||^'||//\\// < | _/| | | : JID......sparky<at>jabberes.org
(____/|| (_-_|_|| ||\\ || |_ |_| |_| _| :..sparky<at>sparky.homelinux.org
Więcej informacji o liście dyskusyjnej pld-devel-pl