/ Forside / Teknologi / Udvikling / Perl / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Perl
#NavnPoint
bjarneA 141
poul_from 50
soccer 30
Nicknack 14
Tmpj 0
Hurtigste måde at slette gamle hash refere~
Fra : Michael


Dato : 26-06-04 12:16

Jeg samler nogle data i (hedder det ikke hash referencer:
$HA{$id}{data}='abc' ??)

Når en bestemt betingelse er opfyldt slettes disse igen. Men det er ikke
altid at denne betingelse bliver opfyldt. Derfor har jeg behov for at slette
ubrugte henvisninger efter f.eks. 24 timer.

Jeg havde forstillet mig noget i retning af at oprette en

$HA{$id}{tid}

og så engang i døgnet lave en

foreach $tmp (%HA) {
... slet hvis tid > 24 timer
}

Eller noget i den retning..

Hvilken metode er den absolut hurtigste til tid? Er det epoc time eller
lignende?, og hvordan ser jeg om tid > 24 timer.

Er måden med foreach helt hen i vejret? ... :)

Nogen der kan guide mig lidt videre?

--
Mvh



 
 
Lars Balker Rasmusse~ (26-06-2004)
Kommentar
Fra : Lars Balker Rasmusse~


Dato : 26-06-04 12:25

"Michael" <maskinen2000@hotmail.com> writes:
> Hvilken metode er den absolut hurtigste til tid? Er det epoc time eller
> lignende?, og hvordan ser jeg om tid > 24 timer.

time() returnerer epoch. 24 timer = 24 * 60 * 60;

Så:

my $now = time;
foreach my $key (keys %HA) {
delete $HA{$key} if $HA{$key}->{tid} < $now - 24 * 60 * 60;
}

> Er måden med foreach helt hen i vejret? ... :)

Det kommer da lidt an på hvor mange indgange der er. Umiddelbart
tyder det ikke på den er stor nok til at du skal bruge en mere
kompliceret metode end ovenstående.
--
Lars Balker Rasmussen Consult::Perl
http://consult-perl.dk

Michael (26-06-2004)
Kommentar
Fra : Michael


Dato : 26-06-04 12:47

"Lars Balker Rasmussen" <lars@balker.org> skrev i en meddelelse
news:0f1xk2r28h.fsf@lagavulin.balker.org...
> "Michael" <maskinen2000@hotmail.com> writes:
> > Hvilken metode er den absolut hurtigste til tid? Er det epoc time eller
> > lignende?, og hvordan ser jeg om tid > 24 timer.
>
> time() returnerer epoch. 24 timer = 24 * 60 * 60;
>
> Så:
>
> my $now = time;
> foreach my $key (keys %HA) {
> delete $HA{$key} if $HA{$key}->{tid} < $now - 24 * 60 * 60;
> }

Meget præcist.. Jeg takker mange gange...

--
Mvh



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste