Avatar billede Slettet bruger
24. oktober 2007 - 20:45 Der er 5 kommentarer og
1 løsning

Script CPU forbrug

I et script, som kører i baggrunden på min server, behandler jeg en lang række ID numre. Forskellige IDer gemmes i en hash, hashen læses og værdier slettes igen. Der er konstant mellem 500 og 2000 værdier i hashen.

Jeg fjerner værdier med:

delete $ids{key};

Selvom "arbejdet" og mængden af informationer i scriptet øjensynlig er det samme hele tiden, så tager scriptet en smule flere CPU ressourcer, jo længere tid det har kørt. Hvordan kan det være? Findes der en metode til at udskrive/evaluere de variabler, som er sat i scriptet?
Avatar billede nielle Nybegynder
25. oktober 2007 - 09:49 #1
Uden at kende den indre implementering af en hash...

Jeg kunne forestille mig at hashen bliver fragmenteret (eller ubalanceret) efterhånden som at du indsætter elementer og tager dem ud igen. Dette vil alt andet lige betyde at den bliver sværere at navigere rundt i og med stigende CPU forbrug til følge.

Hvis det er et problem, så kunne du med jævne mellemrum oprette en helt ny hash, og så overføre de eksisterende værdier fra det gamle til det nye. Dette vil selvfølgelig i sig selv være en CPU tung opgave, så det skal gøres med omtanke.

Et alternativ kunne være at søge på CPAN for at se om der findes en hash-implementering som har mulighed for at holde sig selv balanceret.
Avatar billede Slettet bruger
25. oktober 2007 - 16:54 #2
Jeg har prøvet at undef %ids imens scriptet kører, og det ændrer ikke på CPU forbruget. Burde det ikke resette/nulstille hashen?
Avatar billede nielle Nybegynder
25. oktober 2007 - 17:03 #3
Tjo, men hvis du med jævne mellemrum undef'er hele hashen og så begynder at oprette den igen element-for-element så er det jo i sig selv noget som er CPU tungt.

Men som sagt er ovennævnte betragtninger baseret på et (kvalifiseret) gæt uden dog at kende noget til den interne implementering af hash'er i perl.
Avatar billede Slettet bruger
25. oktober 2007 - 17:38 #4
Når jeg stopper og starter scriptet vil hashen jo også skulle fyldes op igen, og i den situation falder CPU forbruget. Så jeg er bange for at du ikke har fat i noget der...
Avatar billede nielle Nybegynder
25. oktober 2007 - 18:58 #5
Ah well, det ville ikke være første gang at jeg tager fejl :^)
Avatar billede Slettet bruger
01. november 2007 - 18:05 #6
Giver op :(
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester