So im Zuge meines Distributionsprojektes hab ich grad eben mal eine erste kleine Testreihe mit einem alternativen Kompilersatz gemacht.
LLVM entstammt dem Apple-Entwickler Chris Lattner, steht unter OpenSource-Lizenz und eignet sich daher super zum Testen im Moment. LLVM hat standardmaessig ein Frontend fuer GCC, welches die Code-Wandler von GCC nutzt um sie dann Systemseitig zu nutzen. Alternativ arbeitet das LLVM-Team derzeit an eine neuen C-Frontend, welches noch im Entwicklungsstadium ist, namens Clang.
Ich habe heute mal kurzentschlossen Clang + LLVM bei mir kompiliert und einen kleinen Laufzeittest zwischen gcc-kompilierung und clang-kompilierung angestellt. Das Ergebnis ist sehr interessant ...
Nach Testdaten vom LLVM-Team sollen Overhead und Rambelegung waehrend das Kompiliervorganges selber nur bis zu 30% groesser sein, als der Sourcecode selber. Gcc erzeugt hier bis zu 10x soviel Datenmuell, was gerade auf kleineren Systemen enorm von Nachteil sein kann ...
PS ... offizielle Seite von LLVM http://www.llvm.org
Nun zu meinem Test. LLVM+Clang laesst sich im Debug-Modus kompilieren und in optimiertem Modus ... Laufzeittechnisch ist das fuer die Kompilierperformance ein erheblicher Unterschied.
Das erste Testobjekt ist Bash 4.0 gewesen ... das Source-File hat hier ein Datenvolumen von in etwa 5,9 MB ...
Die Kompilierungstests waren Gcc (Standard-Gcc von Debian Lenny) sowie Clang im Debug-Build und Clang im Optimized-Build...
Gcc-Build: Kompilerlaufzeit fuer config, make und make install : 1:25 Minuten , Groesse des erzeugten Binary-Verzeichnisses (shared Libs) : 5152 KB , Programmstartzeit (gemessen an "./bash &") = 0.0003 Sekunden
Clang-Build: Kopilierungszeit wie bei gcc (config + make + make install) : debug-build = 3:29 Minuten; optimized-build = 1:14,5 Minuten , Groesse des erzeugten Binary-Verzeichnisses (shared-Libs) : in beiden Faellen 4132 KB , Programmstartzeit ( gemessen an "./bash &") = 0.001 Sekunden fuer beide Kompilerbuilds.
Interessant find ich vor allem, dass der Codeunterschied auch in der Programmstartzeit messbar zu sein scheint. Wie gross der Unterschied da sein wird, wird sich bei groesseren Programmen wohl besser zeigen ...
Schon der erste Test ist fuer mich erstaunlich ...
Das naechste Testopfer wird vermutlich gcc-4.4 sein, sehr viel Code und damit auch entsprechende Datenmengen ... ich bin gespannt ...
Ich tippe darauf, dass mein Distributions-Projekt auf LLVM+Clang aufbauen wird..
Sobald neue Tests gelaufen sind, werd ich hier erweitern ...
LLVM entstammt dem Apple-Entwickler Chris Lattner, steht unter OpenSource-Lizenz und eignet sich daher super zum Testen im Moment. LLVM hat standardmaessig ein Frontend fuer GCC, welches die Code-Wandler von GCC nutzt um sie dann Systemseitig zu nutzen. Alternativ arbeitet das LLVM-Team derzeit an eine neuen C-Frontend, welches noch im Entwicklungsstadium ist, namens Clang.
Ich habe heute mal kurzentschlossen Clang + LLVM bei mir kompiliert und einen kleinen Laufzeittest zwischen gcc-kompilierung und clang-kompilierung angestellt. Das Ergebnis ist sehr interessant ...
Nach Testdaten vom LLVM-Team sollen Overhead und Rambelegung waehrend das Kompiliervorganges selber nur bis zu 30% groesser sein, als der Sourcecode selber. Gcc erzeugt hier bis zu 10x soviel Datenmuell, was gerade auf kleineren Systemen enorm von Nachteil sein kann ...
PS ... offizielle Seite von LLVM http://www.llvm.org
Nun zu meinem Test. LLVM+Clang laesst sich im Debug-Modus kompilieren und in optimiertem Modus ... Laufzeittechnisch ist das fuer die Kompilierperformance ein erheblicher Unterschied.
Das erste Testobjekt ist Bash 4.0 gewesen ... das Source-File hat hier ein Datenvolumen von in etwa 5,9 MB ...
Die Kompilierungstests waren Gcc (Standard-Gcc von Debian Lenny) sowie Clang im Debug-Build und Clang im Optimized-Build...
Gcc-Build: Kompilerlaufzeit fuer config, make und make install : 1:25 Minuten , Groesse des erzeugten Binary-Verzeichnisses (shared Libs) : 5152 KB , Programmstartzeit (gemessen an "./bash &") = 0.0003 Sekunden
Clang-Build: Kopilierungszeit wie bei gcc (config + make + make install) : debug-build = 3:29 Minuten; optimized-build = 1:14,5 Minuten , Groesse des erzeugten Binary-Verzeichnisses (shared-Libs) : in beiden Faellen 4132 KB , Programmstartzeit ( gemessen an "./bash &") = 0.001 Sekunden fuer beide Kompilerbuilds.
Interessant find ich vor allem, dass der Codeunterschied auch in der Programmstartzeit messbar zu sein scheint. Wie gross der Unterschied da sein wird, wird sich bei groesseren Programmen wohl besser zeigen ...
Schon der erste Test ist fuer mich erstaunlich ...
Das naechste Testopfer wird vermutlich gcc-4.4 sein, sehr viel Code und damit auch entsprechende Datenmengen ... ich bin gespannt ...
Ich tippe darauf, dass mein Distributions-Projekt auf LLVM+Clang aufbauen wird..
Sobald neue Tests gelaufen sind, werd ich hier erweitern ...