Die Bracket-Pair-Farbgebung in VSCode 10.000-mal schneller machen
(code.visualstudio.com)-
Die 2016 entwickelte Erweiterung Bracket Pair Colorizer wurde 6 Millionen Mal installiert
-
Auch Version 2 mit verbesserter Performance wurde 3 Millionen Mal installiert
-
Wegen der Einschränkungen der VS Code Decoration API und weil kein Zugriff auf Token-Informationen möglich ist, ist sie bei großen Dateien aber immer noch langsam
→ Eine 42k-Datei lastet die CPU 10 Sekunden lang zu 100 % aus, sodass alle anderen Vorgänge blockiert werden
- Ab 1.60 wird diese Erweiterung direkt im VS Code Core umgesetzt und dadurch 10.000-mal schneller (in einem bestimmten Beispiel)
→ "editor.bracketPairColorization.enabled": true
- Gilt auch für VS Code for Web und Monaco
-
Schon diese Funktion selbst lässt sich ohne umfassende API-Änderungen in einer Erweiterung nur schwer schnell umsetzen
-
(Der Originalartikel enthält auch Details zum Algorithmus, ist aber zu lang, um sie hier zu übernehmen.)
4 Kommentare
Ich habe schon länger Bracket Pair Colorizer 2 verwendet, aber als ich wieder auf die Erweiterungsseite gegangen bin, habe ich gesehen, dass die Wartung eingestellt wurde.
Ich habe die Erweiterung entfernt und die Option
editor.bracketPairColorization.enabledaktiviert.Ich wusste zwar, dass es aktualisiert wurde,
aber ich hatte keine Ahnung, dass sich die Performance in diesem Maß verbessert hat
offenbar habe ich Erweiterung 1 verwendet
ich habe die Erweiterung gelöscht und diese Funktion in den Einstellungen aktiviert. :)
Auf den ersten Blick wirkt es so, als wäre das Problem dadurch entstanden, dass VSCode eine bekannte Erweiterung intern implementiert hat, aber
https://github.com/microsoft/vscode/…
Der ursprüngliche Autor von Bracket Pair Colorizer verfolgt dieses Performance-Problem ebenfalls mit,
und sagt selbst, dass diese Erweiterung inzwischen so geworden ist, dass sie für ihn kaum noch zu überblicken ist und daher schwer zu warten ist.
Mit anderen Worten: Wenn VS Code das intern schnell implementiert, ist das am Ende eher für beide Seiten besser.
Das habe ich auch gedacht, also war es eine Win-win-Situation ^_^ ( Der ursprüngliche Entwickler muss sich jetzt schließlich nicht mehr darum kümmern, haha )