Tornando a colorização de pares de colchetes do VSCode 10 mil vezes mais rápida
(code.visualstudio.com)-
A extensão Bracket Pair Colorizer, desenvolvida em 2016, teve 6 milhões de instalações
-
A versão 2, com desempenho aprimorado, também teve 3 milhões de instalações
-
Mas, devido às limitações da VS Code Decoration API e à impossibilidade de acessar informações de tokens, ela ainda é lenta em arquivos grandes
→ Um arquivo de 42k usa 100% da CPU por 10 segundos, fazendo com que todas as outras ações parem de funcionar
- A partir da versão 1.60, essa extensão passou a ser implementada no core do VS Code, melhorando a velocidade em 10 mil vezes (em um exemplo específico)
→ "editor.bracketPairColorization.enabled": true
- Também aplicado ao VS Code for Web e ao Monaco
-
Isso mostra que esse recurso em si é difícil de implementar rapidamente em extensões sem uma grande mudança de API
-
(O artigo original inclui detalhes do algoritmo, mas são longos demais para reproduzir aqui.)
4 comentários
Eu usava o Bracket Pair Colorizer 2 há bastante tempo, mas ao entrar novamente na página da extensão vi que a manutenção já havia sido encerrada.
Removi a extensão e ativei a opção
editor.bracketPairColorization.enabled.Eu sabia que tinha sido atualizado, mas
não fazia ideia de que o desempenho tinha melhorado tanto assim
eu estava usando a extensão 1
apaguei a extensão e ativei esse recurso nas configurações. :)
À primeira vista, parece que o problema é o VSCode ter implementado internamente uma extensão famosa,
https://github.com/microsoft/vscode/…
O autor original do Bracket Pair Colorizer também está acompanhando essa questão de desempenho e,
ele mesmo diz que a extensão já ficou difícil de manter a ponto de ser complicado para ele continuar mexendo nela.
Ou seja, no fim das contas, é melhor para os dois lados que o VS Code implemente isso internamente de forma rápida.
Eu também pensei a mesma coisa, então acabou sendo uma situação em que todos saíram ganhando ^_^ ( o desenvolvedor original agora... não precisa mais cuidar disso. hehe )