🇧🇷 A Ineficiência do Regex e Como Otimizá-lo
High performance school - blog
Posted on November 2, 2023
Regex, o vilão da performance
Você sabia que expressões regulares (regex) podem ser extremamente ineficientes em certos cenários? Isso ocorre principalmente devido a 'backtracking' excessivo, que pode levar a tempos de execução exponenciais!
Por exemplo, considere o regex (a+)+b
e a string a...a!
(onde ... são milhares de 'a'). Esse regex tentará diversas combinações antes de falhar, tornando-se muito lento.
Mas a boa notícia é: o V8 (motor JavaScript do Chrome e Node.js) introduziu uma flag experimental para lidar com isso: --enable-experimental-regexp_engine-on-excessive-backtracks.
🔍 Teste Prático:
const regex = /(a+)+b/;
const input = 'a'.repeat(5000);
console.time('Regex Sem Otimização');
input.match(regex);
console.timeEnd('Regex Sem Otimização');
o resultado será algo em torno de 70.885ms
Para usar a flag no Node.js:
node --enable-experimental-regexp_engine-on-excessive-backtracks seuScript.js
Com isso, ao detectar backtracks excessivos, o V8 mudará para um mecanismo de regex diferente e mais eficiente!
Aqui o resultado caiu pra 1.977ms
😲
Lembre-se: regex é uma ferramenta poderosa, mas com grandes poderes vêm grandes responsabilidades. Use com sabedoria e sempre monitore o desempenho!
Olhe https://v8.dev/blog/non-backtracking-regexp para mais informações.
Newsletter
Gostou desse conteúdo? Aproveita pra se inscrever na nossa newsletter https://highperformanceletterbr.substack.com/
Postamos conteúdos sobre performance e otimização todas as semanas!
Primeiro curso de performance backend js do brasil(ou do mundo)
🚀 Domine o Desempenho Backend com JavaScript! 🚀
🎓 Apresentamos o PRIMEIRO Curso de Performance Backend em JavaScript no Brasil! 🇧🇷
🔥 Seja um dos pioneiros a explorar o mundo do desenvolvimento backend com foco em eficiência e velocidade. Este curso exclusivo é sua porta de entrada para se tornar um especialista em otimização e desempenho de aplicações JavaScript.
🌟 O Que Oferecemos:
Instrutores Especialista: Aprenda com um profissional que atua com esse assunto no dia a dia.
Conteúdo Avançado: Desde fundamentos até técnicas avançadas de otimização.
Projetos Práticos: Coloque suas habilidades à prova com desafios reais.
Comunidade e Networking: Junte-se a uma comunidade vibrante de desenvolvedores.
🛠️ Domine Ferramentas e Técnicas Essenciais: Conteúdo prático sobre as melhores tools de monitoramento e análise de recursos
Análise de Performance;
Diagnóstico;
Otimização de Código;
Gerenciamento Eficiente de Memória;
Eventos e streaming;
🚀 Transforme a forma que os outros devs te veem:
Esteja na vanguarda do desenvolvimento backend. As habilidades que você adquirirá são inestimáveis e altamente procuradas no mercado de trabalho para posições senior.
Posted on November 2, 2023
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.