06. marts 2001 - 10:35Der er
16 kommentarer og 1 løsning
Optimering af program størrelse og hukommelse forbrug.
Hej, Jeg har et lille program, der trækker nogen data fra en database, regner lidt på tallene og sender resultaterne i en e-mail. Programmet fylder 617 KB. Det lyder af meget, da det er ganske små datamængder, der er involveret. Er det ikke muligt at \"slanke\" programmet et eller andet sted ? Hvad værre er, når programmet startes, bliver der afsat over 15 MB hukommelse til det i alt ! (Det er på Windows NT 4 maskine.) Der må da findes et eller andet, jeg kan pille ved for at optimere RAM forbruget ! Eller hvad ?
Hvis du bruger mere end 1 form i dit projekt, så kan du med fordel la\' være med at oprette alle form\'ene når programmet starter. Altså først oprette den når den skal bruges og så free\'e den igen når du er færdig med at bruge den !
Det kan være svært at \"slanke\" dit program. Der findes værktøjer der er i stand til at komprimere din EXE fil, men dette er ofte på bekostning af ram forbrug mens programmet køre (da HELE programmet bliver pakket ud i hukommelsen). Når der er tale om ikke komprimerede EXE filer så indlæser windows ikke altid HELE programmet. For at skære mængden ned skal du nøjes med at use de units du har bruge for og i det omfang det er muligt skal du nøjes med at bruge std. komponenter (3. parts componenter \"fylder ofte mere\").
At du bruger 15 MB under runtime lyder umiddelbart af meget. Under W95/98 er der ikke så meget du kan stille op, men under NT findes der et kald der frigiver noget af den hukommelse som programmet benytter (det svarre lidt til at minimize/maximize din applikation). Men i skrivende stund kan jeg ikke lige huske hvad denne kommando heder.
>>> borrisholt/snowball jeg har een \"main\" form og jeg har flere kald til MessageDlg og InputBox funktionerne. Men de forme, som funktionerne bruger bliver vel oprettet or destrueret efterhånden som der er brug/ikke brug for dem ...
Har du overvejet om det er nødvendigt at bruge form\'s, hvis du kan klare dig med et console program SÅ slanker det RIGTIG meget, evt. kig lidt på KOL/XCL det er værktøjer til at lave delphi programmer med forms der fydler ca. 50k og det er vel at mærke uden compress og andet sjov, det er OpenSource.
>>> martinlind : programmet skal køre under Windows. Der er bland andet to TDateTimePicker objekter, jeg bruger til at angive start og slut dato. Dem vil nødigt til selv at kode ...
Prøv XCL, jeg har lige installered det og lavet et \"hallo world\" project, der er en NewProject wizard med, compile. køre programmet og se det virke... Det gjore det og det fylder 37K med en tom form der shower når jeg runner.
>>> martinlind : jeg har ikke haft held af at omkompilere mit program med KOL. Der er også et andet aspekt : andre folk skal muligvis videreudvikle/opdatere de programmer, jeg laver. De vil så skulle til at installere KOL. Jeg bliver desværre nødt til at afvise dit svar ... Men jeg kommer nok til at kigge på KOL til privat brug ...
>>> borrisholt : på andre maskiner end min optager programmet meget mindre hukommelse ... mærkligt ... men SetProcessWorkingSetSize kommer jeg nok til at bruge andetsteds. Tak for hjælpen.
Det kan jo være Oracle Client\'en fylder ad h.. til jeg kender den ikke i de nye udgaver, men IB den er bare fed, og IBExpress til Delphi kører også helt fedt. De tager ca. 2 min. at installere IB
/Martin
Synes godt om
Ny brugerNybegynder
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.