Hallo,
Ich spreche eigentlich seltenst jemanden persönlich an,
Ich schon. ("SelfHTML-Forum - da werden Sie geholfen.")
Ich habe jetzt nur "Hallo" genommen. So besser? ;-)
ist schließlich ein Forum, gelle? ;-)
<eg>Meinst Du, die Browserweichenbastler lesen hier noch mit?</eg>
Äh ...
Glaube kaum.;-)
BTW: Wenn Du _hier_ XML benutzt, dann doch bitte korrekt, ja? >;->
Plattform, Compiler, CPU-Architektur? (Ich SunOS, nix Linux.)
$ Linux yals 2.2.7cz #1 Sat Oct 20 06:07:13 MEST 2001 i586 unknown
Aber das liegt wahrscheinlich am meisten an der unterschiedlichen
Austattung des Apachen, weniger an der Architektur. Ich habe mal
ein Crosscompile auf 64Bit versucht, der Unterschied war marginal.
Yep - ich habe mal meinen Apache auf irgend einer ollen Suse-Box, die
hier herum steht ("Linux 2.2.1" und "egcs 2.91.66", was immer das sein
mag), übersetzt - die Größe war fast identisch zur Sun-Version.
(Dort bewirkte das "strip" übrigens noch einiges, auf der Sun nicht.)
Ja, ob 'strip' noch etwas entfernen kann, liegt viel am Compiler und am System.
Hast Du mehr als '-O2' verwendet?
Ja.
Immerhin steht in der src/Configuration:
"# Optimization note:Be careful when adding optimization flags (like -O3 or -O6) on the OPTIM
entry, especially when using some GCC variants. Experience showed that using
these for compiling Apache is risky. If you don't want to see Apache dumping
core regularly then at most use -O or -O2.
#"
"regularly" - so, so ... da war mein 'Heldenmut' dann doch eher endlich,
wenn es um Produktionsmaschinen geht ... wie 'tapfer' bist Du denn? ;-)
Ja, man sollte schon wissen, auf was man sich einläßt ;-)
No risk, no fun!
No suicidal tendencies, no windows!
Aber die Probleme enstehen nur bei alten Versionen. Beim 2.95.2 ist das nicht mehr der Fall (Nur bei wirklich extrem obskuren Sachen, siehe ChangeLog zum 2.95.3)
Könnte man also noch mehr in der Größe optimieren, falls
heutzutage Speicher wirklich noch die große Rolle spielt.
Ich befürchte aber signifikante Geschwindigkeitseinbußen.
Ich hätte gedacht, mehr Optimierung (d. h. 'aggressiveres Raten') wäre
eher 'schlauer' und schneller?
Achso, ich dachte Du meintest Größenoptimierung (z.B. -Os beim GCC)
Also auf der Linux-Box mal schnell -O6 angegeben und neu übersetzt -
und siehe da: Das Programm wird dabei größer! (Von 277 auf 302 KB.)
Und das wundert mich noch nicht mal: Ich kann mir gut vorstellen, daß
irgend eine Optimierungsstufe z. B. Schleifen aufrollt oder sonstige
Turnübungen veranstaltet, um Tempo zu gewinnen.
Ja, genau das. 'man gcc' gibt über die Einzelheiten Auskunft.
Aber laß Dir gesagt sein: Du möchtest es nicht wirklich _so_ genau wissen ;-)
Und dabei kann der Compiler halt auch falsch raten, wenn unsauberer Code
z. B. davon lebt, daß einzelne Anweisungen obskure Seiteneffekte haben ...
Ist das nicht wie beim HTML? Wenn man da irgendwelche Merkwürdigkeiten eines speziellen Browsers nutzt ...
Aber auch bei C gibt es einen Standard, sogar eine ISO! ;-)
Mein gcc-Compiler auf Solaris scheint uuuralt zu sein ('gcc -v': 2.8.1,
März 1998 ???), bei dem passiert oberhalb von -O3 nichts mehr (ich habe
gerade alle Stufen durchprobiert).
Ja, irgendwann haben die die Feineinteilung aufgegeben, nur der Pentiumoptimierte (pgcc) nutzt sie noch.
Am speichersparendsten bei meinem Compiler ist übrigens -O2 ;-), damit
wird das binary am kleinsten und es wird auch am wenigsten Hauptspeicher
vom laufenden Programm belegt.
Noch kleiner als -Os?
Ab -O3 scheinen mir also die aggressiven Optimierungen anzufangen, die
bereit sind, Geschwindigkeit für Speicher einzukaufen.
Eigentlich schon früher, kommt aber auf den Code an.
(Bei mir von 358 auf 393 KB binary und fünf Seiten Hauptspeicher mehr
belegt, gemessen jeweils zweimal: Direkt nach Apache-Start und nochmal
nach Anforderung zweier definierter Seiten, einer statischen und einer
SSI - wodurch die Speicherbelegung um ca. 20% zunimmt, obwohl alles fest
einkompiliert ist; das werden wohl dynamisch angeforderte Puffer sein
oder etwas was Ähnliches.)
Was das genau ist, läßt sich nur schwer herausfinden ohne Dump;-)
Mit dem SunOS-Compiler wäre es auch ein Trauerspiel.
(Zum Glück hat hier der Admin ein GCC-package installiert.)
Naja, so das Gelbe vom Ei ist der auch nicht gerade ;-)
Was würdest Du mir empfehlen? (gcc 3.0.3, 2001-12-20 ... ?)
Um Gotteswillen, nein!
Aber war wahrscheinlich auch nicht ernstgemeint, oder? ;-)
Würde einen der letzten aus der 2er Reihe empfehlen. Ich bin mit dem 2.95.2 ganz zufrieden. Habe mir von der Nachfolgeversion nur das Changelog besorgt und den einen Bug gefixt, der mich störte. Wer weiß, was die ganzen anderen Bugfixe so alles angerichtet haben ;-)
Aber ich werde mir im Sommer mal anschauen, was sich da so alles getan hat. Vielleicht sogar mal einen ausprobieren.
Aber solange der Neue C99 nicht vollständig unterstützt, sehe ich keinen großen Sinn zum Wechsel.
Beim Compiler ist da wie beim Kernel. Nimm Dir nur einen Neuen, wenn Du ihn wirklich unbedingt brauchst. ;-)
so short
Christoph Zurnieden