Neakros Blog
Man nennt es neudeutsch ‘bloggen’.
Der eigene Firefox mit PGO

Von Neakro am 24. February 2009, 3:44

Seit Anfang an störte mich etwas am Firefox: seine Geschwindigkeit war im Vergleich zu Windows einfach schlecht. Was unter Windows flüssig lief, lief unter Linux ruckelnd und teilweise auch unbenutzbar langsam. Ich lebte 2 Jahre lang damit, hoffte auf eine Verbesserung in 2.0 und später dann in 3.0, aber sie blieb aus. Vor ein paar Tagen las ich durch Zufall dies: Native Firefox on Ubuntu is even slower than on Wine.

Die erste Lösung klang vielversprechend: “Compile Firefox with PGO by default”. Gesagt getan. Nach einigen Sekunden Suchen, fand ich die Anleitungen im Mozilla Developer Wiki.

Fix den Quellcode-Tarball für Firefox heruntergeladen und entpackt. Laut des Wikis musste ich nun eine Datei mit dem Namen .mozconfig anlegen, um dort dann die Konfiguration für den Buildprozess festzulegen. Die Datei gehört in das root-Verzeichnis des Quellcodes. Mit einigen herausgesuchten Funktionen aus schon erstellten Firefoxen (about:buildconfig) erstellte ich nun folgende .mozconfig:

. $topsrcdir/browser/config/mozconfig
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/ff-opt
mk_add_options PROFILE_GEN_SCRIPT='$(PYTHON) $(MOZ_OBJDIR)/_profile/pgo/profileserver.py'
ac_add_options --disable-tests
ac_add_options --disable-debug
ac_add_options --enable-optimize
ac_add_options --enable-update-packaging

Jetzt noch fix die Abhängigkeiten installiert und nun musste make ran:

make -f client.mk profiledbuild

profiledbuild am Ende ist wichtig, sonst wird Firefox ganz normal kompiliert!

Nachdem ich ein paar Abhängigkeiten korrigiert hatte, die ich wohl übersehen hatte, hatte ich viel Zeit für andere Sachen, bis der Prozess beendet war. PGO baut Firefox zweimal, daher dauert es entsprechend länger bis man fertig ist.

Als schließlich make die Fertigstellung meldete war ich ganz begierig den Firefox zu testen. Schnell einen Tarball erstellt

make -C ff-opt/browser/installer

und ihn von ./ff-opt/dist entpackt in ein eigenes Verzeichnis geschoben. Dann gestartet, und: Begeisterung pur! Er ist so schnell, das hätte ich mir nicht mal in meinen kühnsten Träumen vorstellen können. Die Geschwindigkeit ist bestimmt um den Faktor 3 höher als bei dem von Mozilla vorkompilierten Firefox.

Fazit:
Jeder Linux-Firefox-Benutzer sollte es mal mit einem selbst kompilierten Firefox versuchen, wenn nicht schon seine Distribution einen mit PGO kompilierten anbietet.

Anmerkung:
Sicherlich gibt es noch mehr Funktionen um auch das letzte Quant Geschwindigkeit herauszuholen, aber ich bin mit dem jetzigen Ergebnis so zufrieden, dass ich momentan nicht die Lust verspüre, nochmal 2 Stunden für 0,1% verbesserte Geschwindigkeit zu investieren.