"M_abs" <M_abs@oncable.dk> wrote
[8<8<8<]
> Og jeg svare igen fordi det er et meget simplet program. *s* dette er jo
> dårlig nok en "hallo world"-program det er bare et lille vindue uden nogen
> form for indhold.
Du kan sagtens lave et lille program til MS-Windows med et simpelt lille
vindue, der totalt set fylder ca. 20-40 kbyte, og som bruger forsvindende
lidt hukommelse.
Du skal bare skrive direkte til Win32 API'et.
Kig f.eks. hos SysInternals (
www.sysinternals.com) og se virkeligt nyttige
programmer, med en lille effektiv GUI som samlet set kun fylder nogle få 100
kbyte.
Hvorfor traf du det designvalg at bruge wxWindows ?
Det har formodentligt nogen egenskaber som du ønsker, f.eks.:
* Objekt orienteret programmerings paradigme.
Hvorfor valgte du det frem for andre biblioteker som f.eks. Microsoft MFC,
Borland VCL eller Trolltech Qt ?
Det kunne f.eks. være:
* Open-source
* Cross-platform
F.eks. vil et lille program med MFC statisk linket fylde ca. 250 kbyte,
hvilket dog stadig er ca en størrelsesorden større end et lille program
skrevet direkt til Win32 API'et.
Man kunne forestille sig at wxWindows også indeholder nogle kompromisser og
ikke er optimeret på alle leder.
Det ideele løsning, hvor der kun erordele og ingen ulemper, findes ikke.
>
> Jeg synes det virker forkert, når jeg kommer fra et sprog hvor man ikke
> tager al koden med fra det "lib" man includer (importere som det hedder i
> Java). Og jeg bruger kun 2 klasser direkte fra "lib"'et wxWindows.
Hvis du undersøger det lidt grundigere, vil jeg gætte på at man ikke tager
al koden fra biblioteket med, blot fordi man bruger 2 klasser.
Det er oplagt at man får de 2 klasser med.
Dertil kommer constructorene til de 2 klassers basisklasser (der er sikkert
nogen).
Hvis biblioteket er traditionelt vil alle de klasser vi nu har have en række
virtuelle metoder. De bliver også linket med.
Constructorne og de virtuelle metoder bruger sikkert nogle klasser som
bliver linket med osv.
På den måde kan det komme til at fylde en del.
Bemærk dog at hvis man linker dynamisk vil man skulle distribuere _alle_
klasserne der ligger i DLL'et, uanset om de bliver brugt eller ej.
Samlet set vil det et statisk linket program aldrig kunne komme til at fylde
mere på disken end det tilsvarende dynamisk linkede. Man kan naturligvis
spare diskplads, hvis flere programmer deler samme DLL.
Hvis du sparer 2 MByte sparer du altså din bruger for noget i retningen af:
800 kr / 40 GB * 2 MB = 4 ører.
Dertil kommer naturligvis overvejelserne om hvor meget hukommelse programmet
bruger afhængigt af om det er statisk eller dynamisk linket, og de øvrige
overvejelser omkring statisk/dynamisk linkning. Don't even get me started.
Det har tidligere været debateret her i gruppen - brug eventuelt google.
Bemærk at hvis man designer sit GUI klasse bibliotek hensigtsmæssigt, kan
det lade sig gøre få et forsvinde lille performance overhead (målt som
exe-fil størrelse, memory-forbrug under kørsel og antal messages der kan
behandles pr. tidsenhed).
Jeg har skrevet et sådant lille bibliotek som proof-of-concept, hvor
overheadet er nogle få procent, målt i forhold til et tilsvarende program
skrevet direkte mod Win32 API'et.
>
> Hvis jeg nu vil sende mit program et en ven, "se hvad jeg har lavet" så
tror
> jeg de fleste jeg kender både computer-folk og andre mennesker, vil synes
> det er lidt meget for så lidt.
Husk også at sende din ven et link til hvor han kan downloade de nødvendige
DLL'er, og husk at angive hvilken bibliotek version og hvilken compiler
version du har brugt til at oversætte med.
Venlig hilsen
Mogens Hansen