- Oh My Zsh (OMZ) wird weiterhin häufig empfohlen, verursacht aber unnötigen Skript-Overhead, der die Startzeit der Shell verlangsamt
- OMZ ist in Shell-Skripten geschrieben, sodass beim Öffnen jedes neuen Terminal-Tabs alle Skripte erneut interpretiert werden müssen; selbst mit der Standardkonfiguration entsteht dabei eine Verzögerung von etwa 0,38 Sekunden
- Mit einer einfachen minimalen Zsh-Konfiguration, dem Starship-Prompt und einer fzf-basierten Verlaufssuche lässt sich die Startzeit auf 0,07 Sekunden verkürzen
- Starship erstellt den Prompt als einzelnes Binary und ersetzt damit die bisherigen git-, virtuelle-Umgebung- und sprachspezifischen Plugins von OMZ
- Statt komplexer Plugins ist eine verschlankte Shell-Konfiguration, bei der nur die benötigten Funktionen direkt hinzugefügt werden, effizienter
Performance-Probleme von Oh My Zsh
- Oh My Zsh (OMZ) ist weiterhin weit verbreitet, verlangsamt aber durch unnötigen Ballast (bloat) die Startgeschwindigkeit der Shell
- OMZ besteht aus Shell-Skripten, die beim Öffnen jedes neuen Terminal-Tabs vollständig interpretiert werden müssen
- In einer Konfiguration mit den Standard-Plugins
git, zsh-autosuggestions und zsh-autocomplete ergab die Ausführung von /usr/bin/time -f "%e seconds" zsh -i -c exit 0,38 Sekunden
- Wird ein neuer Tab in einem git-Repository geöffnet, entsteht subjektiv eine Verzögerung von etwa 1 Sekunde
- OMZ prüft regelmäßig auf Updates, was mehrere zusätzliche Sekunden Verzögerung verursachen kann
- Häufige Updates der Shell-Konfiguration sind unnötig; empfohlen wird eine einfache Konfiguration, in die nur die tatsächlich benötigten Funktionen direkt aufgenommen werden
Minimale Zsh-Konfiguration
Anpassung des Prompts
Verlaufssuche
- Das häufig verwendete Plugin
zsh-autosuggestions zeigt Vorschläge während der Eingabe an und kann dadurch ablenkend wirken
- Stattdessen wird fzf an
Ctrl+R gebunden, um den Verlauf per interaktiver Fuzzy-Suche zu durchsuchen
source <(fzf --zsh)
Ergebnis der Performance-Verbesserung
Zusätzliche Tipps
Fazit und Einsatzszenarien
- Nach dem Wechsel von OMZ erfolgte die Anpassung an den neuen Workflow innerhalb weniger Tage
- Benötigte Plugins können direkt manuell geladen werden
- Der Grund für das Öffnen vieler Tabs ist die gemeinsame Nutzung von tmux und einem terminalbasierten Editor (helix)
- In tmux werden
lazygit und der Dateimanager yazi als Pop-ups ausgeführt
- Für Code-Ausführung und Testausgaben werden temporäre Splits verwendet, die jeweils als eigene Shell-Sitzung laufen
Zusammenfassung der Kommentare
- Einige Nutzer behaupten, die Startzeit von OMZ liege mit 0,03 Sekunden bereits in einem ausreichend schnellen Bereich
- Der Autor weist darauf hin, dass das Plugin zsh-autocomplete die Geschwindigkeit verringert
- In Ergebnissen von
zsh-bench wurde für OMZ eine Verzögerung bis zum ersten Prompt von 603 ms gemessen, für eine einfache Zsh-Konfiguration 103 ms
- Starship ersetzt die promptbezogenen Funktionen von OMZ durch ein einzelnes Werkzeug
- Andere Nutzer erwähnen Alternativen wie Zimfw, Atuin und selbst geschriebene bash-Prompts
Noch keine Kommentare.