Rendre la colorisation des paires de parenthèses de VSCode 10 000 fois plus rapide
(code.visualstudio.com)-
L’extension Bracket Pair Colorizer, développée en 2016, a été installée 6 millions de fois
-
Sa version 2, avec des performances améliorées, a aussi été installée 3 millions de fois
-
Mais à cause des limites de la Decoration API de VS Code et de l’impossibilité d’accéder aux informations de tokens, elle reste lente sur les gros fichiers
→ un fichier de 42k mobilisait le CPU à 100 % pendant 10 secondes, bloquant toutes les autres opérations
- À partir de la version 1.60, cette extension est directement implémentée dans le cœur de VS Code, avec une amélioration de performances de 10 000x (sur un exemple donné)
→ "editor.bracketPairColorization.enabled": true
- Également appliqué à VS Code for Web et à Monaco
-
Cela montre que cette fonctionnalité elle-même est difficile à implémenter rapidement via une extension sans changement majeur de l’API
-
(L’article original contient aussi les détails de l’algorithme, mais ils ne sont pas repris ici car trop longs.)
4 commentaires
J’utilisais Bracket Pair Colorizer 2 depuis longtemps, mais en retournant sur la page de l’extension, j’ai vu qu’elle n’était plus maintenue.
J’ai supprimé l’extension et activé l’option
editor.bracketPairColorization.enabled.Je savais qu’il y avait eu une mise à jour, mais
je ne savais pas que les performances s’étaient améliorées à ce point
il se trouve que j’utilisais l’extension 1
j’ai supprimé l’extension et activé cette fonctionnalité dans les paramètres. :)
À première vue, on pourrait croire que le problème vient du fait que VSCode a implémenté en interne une extension connue, ce qui pose souci, mais
https://github.com/microsoft/vscode/…
l’auteur original de Bracket Pair Colorizer suit lui aussi ce problème de performances,
et il dit lui-même que cette extension est désormais devenue difficile à maintenir, au point qu’il lui est compliqué d’y toucher.
Autrement dit, si VS Code l’implémente rapidement en interne, c’est plutôt bénéfique pour tout le monde.
J’ai eu la même pensée, donc tout le monde y a gagné ^_^ ( comme ça, le développeur d’origine n’a plus besoin d’en assurer la maintenance désormais.. haha )