Article View: de.comp.lang.c++
Article #138Re: Hello World - warum so gross?
From: Frank Thilo
Date: Sun, 13 Aug 1995 19:12
Date: Sun, 13 Aug 1995 19:12
72 lines
3811 bytes
3811 bytes
sa021pl@unidui.uni-duisburg.de (Joerg Pleumann) wrote: > Hallo, > > ich hab gestern versuchsweise mal den EMX 0.9a mit Fix#6 und GNU C 2.7.0 > unter OS/2 Warp installiert. Dann hab ich - vielleicht sollte ich > erwaehnen, dass ich von C nicht besonders viel Ahnung habe - ein bisschen > in C und C++ herumexperimentiert. Das Ergebnis meiner Experimente hat mich > ein wenig erschreckt. Vielleicht kann mir jemand sagen, was ich falsch > mache oder warum das, was mich stoert, sonst keinen stoert: > > 1) Das uebliche Hello-World in C mit stdio.h war bei Weglassen aller > Symbolinformationen immer noch satte 24 KB groΓ‘. Ein bisschen happig > fuer die simple Ausgabe eines konstanten Textstrings. Nun ja, dazu ist erst einmal zu sagen, dass du als Basis immer den elementaren startup-code drin hast. Frag mich nicht, was der genau macht, aber wahrscheinlich unter anderem Initialisierung der I/O und des Speichermanagements. Wenn du wikrlch Wert darauf legst, so einfache Programme kleienr zu machen, gibt es folgende Moeglichkeiten: - puts statt printf verwenden. printf ist recht komplex und daher auch ziemlich gross - beim Kompilieren die Option -Zomf verwenden, dann werden Standard-OS/2 object files erstellt und der link386 verwendet. Bei der normalen Vorgehensweise wird wohl noch irgendwas dazugelinkt, damit die Programme auch unter nem Dosextender (eben dem emx.exe) laufen koennen. - Dann gibts doch die Option -Zcrtdll (oder -Zmtd). Dann wird der Startupcode dynamisch dazugelinkt. Allerding slaueft das Programm dann nicht mehr ohne die DLLs (emxlibc...). Ausserdem gibts noch ein paar weitere switches, die stehen aber in doc/emxdev.doc - Und zu guter letzt kannst du fuer Warp noch /Zlinker /exepack:2 angeben, damit der link386 das Programm mit dem neuen Packmodus linkt. > 2) Das entsprechende Programm in C++ mit iostream.h liess sich nicht auf > weniger als 64 KB bringen. Tja, das ist wohl die Groesse der gcc iostream-library. Kann man wohl nix machen,. befuerchte ich. > 3) Ein Mini-Programm mit einer eigenen Klasse mit mehreren Feldern vom > Typ String und ein paar Billig-Methoden war irgendwas um 120 KB gross. Hmm, _das_ finde ich allerdings etwas seltsam. Hast du das auch ohne debug-info uebersetzt? > Wie kommen diese Code-Groessen zustande? Ist das etwa normal fuer C? Dann > kann ich ja gleich in Visual Basic programmieren und immer eine 5 MB DLL > zu meinen Programmen dazugeben. Oder verhaelt sich nur GNU C so? Oder mache > ich irgendwas falsch, gibt's da einen Parameter -SMALLEXE, den ich noch > nicht entdeckt habe? :-) Der GNU C-Compiler erzeugt eigentlich sehr guten (schnellen und kleinen) Code. Allerdings kann ich zum C++-Compiler nichts sagen, es kann sein, dass der nicht so gut wie der reine C-Teil ist. Die recht grossen files, die bei kleinen Prograemmchen entstehen, darfst du nicht so ernst nehmen, das liegt halt am dazugelinkten Code. Dafuer waechst die Codegroesse dann bei steigender Komplexitaet des Quellcodes aber auch nur langsam. Dein kleines C++-Beispiel wundert mich hier etwas. Was meinst du mit 'Feldern vom Typ String'? Benutzt du fertige String-Klassen vom GNU? Vielleicht liegts daran. -- Frank Thilo - gl600@appl2.hrz.uni-siegen.de IRC: Chestal - <A HREF="http://vespa.unix-ag.uni-siegen.de/~thilo"></A>
Technical Details
Message-ID:
<G6kLwkOAEmsX084yn@appl2.hrz.uni-siegen.de>Path:
arc1-ca.pugleaf.net!news.dfn.de!si-nic!usenetReferences:
<YrjLwYkkusiW084yn@unidui.uni-duisburg.de>Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!news.dfn.de!si-nic!usenet From: gl600@appl2.hrz.uni-siegen.de (Frank Thilo) Newsgroups: de.comp.lang.c++,de.comp.lang.c Subject: Re: Hello World - warum so gross? Date: Sun, 13 Aug 1995 21:12:06 +0200 Organization: University of Siegen Message-ID: <G6kLwkOAEmsX084yn@appl2.hrz.uni-siegen.de> References: <YrjLwYkkusiW084yn@unidui.uni-duisburg.de> NNTP-Posting-Host: appl2.hrz.uni-siegen.de