Avatar billede hhjollund Praktikant
28. november 2000 - 22:43 Der er 10 kommentarer og
1 løsning

tiltagende langsom programafvikling

Jeg har lavet et program, som gennemsøger alle filer for bestemte tegnsekvenser. Det fungerer udmærket, men jeg undrer mig over at hastigheden falder kraftigt efterhånden. Tilsidst går programmet næsten i stå når den har læst sig gennem 2-3 GB. Der er tale om en ret simpel løkke som traverserer gennem filtræet. Jeg kalder som man skal findclose efter hver findfirst. Unit\'em kører som tråd med higher priority.  Hastigheden er ikke påvirket af om programmet kører i forgrund eller baggrund.
Avatar billede pellelil Nybegynder
29. november 2000 - 07:27 #1
Har du prøvet at kigge på hukommelses forbruget?. Hvis du bruger \"meget\" hukommelse så tvinges windows til at swap\'e og navnlig hvis dette sker på samme disk så vil din maskine \"gå i knæ\".

Uanset hvordan du har lavet dit program vil jeg forslå at du dels kigger på \"MemoryMappedFiles\" og dels en søge routine a-la Boyer/Moore - så mon ikke Borrisholt melder sig på banen ???
Avatar billede borrisholt Novice
29. november 2000 - 08:38 #2
Så pyt da, pellelil ....

Boyer/Moore kan du bruge til at søge efter noget inde i en fil, den er ret hurtig. Jeg har et \"Ready-To-Go\" eksempel liggende på hvordan man gør sådan noget.

Hvis du som du siger du gør husker at kalse FindClose hvergang så er der måske noget andet (anne?) galt med din søge algoritme. På http://borrisholt.com ligger der en søge algortime der kan travesere et fil træ skrevet i en tråd. Den har så vidt jeg ved ingen memory leaks ...Den kan du eventuelt hente .... (Jeg bliver så glad når folk henter kode fra siden)

Prøv det og skriv så igen ...

Og god morgen til dig Pelle
Jens B
Avatar billede delphidaner Nybegynder
29. november 2000 - 08:42 #3
Du bruger Assign/Reset/Rewrite til filbehandling, ikke? I så fald så prøv at skifte til file streams.
Avatar billede pellelil Nybegynder
29. november 2000 - 09:17 #4
delphianer> Faktisk så er Assign/Reset/Rewrite hurtigere end streams når/hvis du accesser filen med BlockRead/BlockWrite.
Avatar billede pellelil Nybegynder
29. november 2000 - 09:19 #5
God morgen Jens - Jeg vidste ikke at du ville blive så glad over \"lidt traffik\", men hvis det kan rede din dag så vil jeg da straks gå op og hente et par filer  :-)
Avatar billede delphidaner Nybegynder
29. november 2000 - 09:29 #6
pellelil >> Jeg har kun haft dårlige erfaringer med det.
Avatar billede delphidaner Nybegynder
29. november 2000 - 09:32 #7
OK, pellelil, kig her:
http://www.eksperten.dk/spm/35747
Avatar billede pellelil Nybegynder
29. november 2000 - 09:58 #8
delphianer> Forskellem mellem Assign/Reser/Rewrite (via BlockRead/BlockWrite) og Streams er da også minimal. Jeg vil
Avatar billede hhjollund Praktikant
29. november 2000 - 23:13 #9
Tak for gode kommentarer, men jeg tror desværre ikke årsagen ligger i søgealgoritmen eller swap fil fordi:
1: det store drev, som hvor hastigheden for alvor daler er et netværksdrev
2: jeg kan vha en blinkende radio-button se at det til sidst tager en evighed blot at læse en sølle fil på nogle få KB.
Avatar billede delphidaner Nybegynder
30. november 2000 - 07:47 #10
Det er helt klart en memory leak et eller andet sted, og jeg har haft det samme problem, indtil jeg skiftede til filestreams.
Avatar billede hhjollund Praktikant
14. august 2007 - 00:00 #11
lukketid
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