ccache == mehr Tempo?

Viele Leute sind der Meinung, dass ccache – gerade bei Gentoo – ein Element ist, das die Compile-Zeit extrem reduziert. Doch wann hilft ccache wirklich? Und bringt das wirklich was?

Sehen wir den Tatsachen ins Auge:
ccache parsed den Aufruf um sicherzustellen, dass es ein einziger Compile ist, da es nichts für Linken oder das Bauen von mehreren Source-Files auf einmal (Ausnahme -fwhole-program) bringt. Dann wird der Compiler angeworfen. Nachdem Preprocess wird das Ergebnis an einem temp. Speicherplatz abgelegt und mit md4 gehashed. Dann geht’s an die Suche im Dateisystem: Ist eine Datei mit dem selben md4 vorhanden, wird derer compilierte Version zurückgeliefert oder eben der Compiler angeworfen.

Sprich, preprocessing, hashing und Kopieren sind unsere größten Zeitfresser hier, die immer ausgeführt werden – egal ob wir im Cache einen Treffer haben oder nicht.

Um das Ganze noch mit ein paar Zahlen zu würzen: Bei einem Debugging einiger Pakete, die beim Bauen immer wieder fehl schlugen, kam ich auf eine Hit-Rate von knappen 35% im Cache – obwohl die selben Pakete immer und immer wieder gebaut wurden. Dazu kommt noch dass das Hashen inetwa genau so CPU Intensiv wie Compilen selbst ist und mir dank dem erhöhten I/O mir nicht wirklich einen Bonus brachte und ich unterm Strich sogar langsamer unterwegs war.

Wenn ich mir da noch die Fehler anschaue, die mir ccache ab und an verursacht, verabschiede ich mich von diesem FEATURE-Flag nur zu gerne.

Author:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert