Re: GCC mit precompiled header?

Datumsansicht Baumansicht Betreffansicht Attachement-Sicht

From: Mathias Waack (mathias_at_atoll-net.de)
Date: 16. Jun 2002


On Sunday 16 June 2002 02:04, Alexander Holler wrote:
> Ja. Ich frage mich auch ob es denn soviel bringen soll vorcompilierte
> Header zu benutzen. Bei C-Quellen ist das bei den heutigen Rechnern wohl
> unnötig

Scheint mir auch so wenn ich sehe, wie der gcc durch typischen C-Code
durchfliegt, man kommt mit dem Lesen des Outputs gar nicht hinterher. Ich
muesste mal wieder einen Test machen, wer den Compiler ausbremst, die Platte
oder der Prozessor...

> und bei C++ wird sehr viel mit templates gearbeitet, wobie ich
> nicht glaube, das ein precompile da sehr viel bringt.

Doch gerade da. Wie Mark schon sagte, schau Dir mal an, wo ein Programm,
welches viel Funktionalitaet aus der STL benutzt, seine Compilezeit verbraet.
Uebrigens koennte der Compiler, da er ja die precomiled Header selbst
erzeugt, auch mal schauen, welche Instanziierungen benutzt werden und die
schon mal in den precomiled header einbauen.

Auch inline-Funktionen koennen die Compilezeit beeinflussen, sie muessen halt
in jedem File welches den entsprechenden Header included neu kompiliert
werden. Dabei ist das doch offensichtlich unnoetig.

Und letzendlich kann man sich viel Parse-Zeit sparen. OK, Parsen dauert nicht
lange, aber man denke nur mal an Geschichten wie Qt mit relativ "grossen"
Vererbungsbaeumen. Oft hat jede (groessere) Klasse in C++ einen eigenen
Header. Ein Vererbungsbaum mit Tiefe 10 bedingt also, dass jedesmal, wenn ich
das "juengste" Kind include, der Compiler (also der Preprozessor) 10mal einen
Header parsen und jedesmal mind. 1 zusaetzlichen Header einbinden muss. Wer
schon mal, um beim Beispiel zu bleiben, ein KDE Programm uebersetzt hat,
weiss wieviel Zeit dabei verschwendet werden kann.

Also wie ueblich, der Optimierungsmoeglichkeiten sind viele.

Mathias


Datumsansicht Baumansicht Betreffansicht Attachement-Sicht

Dieses Archiv wurde generiert von hypermail 2.1.2 : 16. Jun 2002 CEST