BT

Início Notícias O motor do JavaScript V8 melhora o desempenho assíncrono

O motor do JavaScript V8 melhora o desempenho assíncrono

Favoritos

A equipe do JavaScript V8 anunciou melhorias para otimizar as funções assíncronas e promessas. A equipe também aprimorou a experiência de depuração do código assíncrono, um ponto problemático comum para desenvolvedores de JavaScript.

A introdução de promessas no ES2015 e posteriormente de funções assíncronas e a iteração assíncrona do ES2018 tornam a criação de código assíncrono muito mais eficiente do que o uso de retornos de chamada. No entanto, até recentemente, o uso desses novos recursos não era eficiente. Os engenheiros do Google V8 Maya Lekova e Benedikt Meurer explicam:

Conseguimos melhorar significativamente o desempenho do código assíncrono entre a V8 v5.5 (Chrome 55 e Node.js 7) e a V8 v6.8 (Chrome 68 e Node.js 10). Chegamos a um nível de desempenho em que os desenvolvedores podem usar com segurança esses novos paradigmas de programação sem precisar se preocupar com velocidade. Conseguimos melhorar o desempenho do Promise.all por um fator de 8 ×.

A equipe do V8 também explorou o desempenho do código-fonte do mundo real, observando o uso de estruturas de middleware como hapi, koa e trek, que usam promessas e funções assíncronas. Com as recentes mudanças no V8, o desempenho ao usar essas estruturas melhorou significativamente.

O V8 introduziu várias mudanças para levar a melhorias de desempenho assíncrono, incluindo o TurboFan, um novo compilador de otimização, e o Orinoco, um novo coletor de lixo, movendo o GC para fora do thread principal para melhorar o processamento de pedidos. Além disso, houve um erro dentro do Node.js 8 que levou à espera em pular microticks para alguns casos.

O trabalho de desempenho levou alguns patches propostos para melhorar a especificação de funções assíncronas, o que deve melhorar o desempenho não apenas no V8, mas em todos os mecanismos JavaScript. Essas alterações incluem a remoção de dois microticks extras e a remoção de uma promessa descartável de funções assíncronas.

Com as atualizações recentes para o código-fonte V8 e refinamentos propostos para a especificação de funções assíncronas, async/wait agora supera a promessa do código pela primeira vez, reduzindo a sobrecarga das funções assíncronas.

Para facilitar a depuração, o Chrome DevTools também melhora os rastreamentos de pilha para incluir a parte assíncrona do rastreamento de pilha.

O V8 é um mecanismo JavaScript de código aberto do Google que usa navegadores baseados no Chrome e no Chromium, bem como o Node.js. O V8 está disponível sob uma licença do estilo BSD. Contribuições são bem-vindas através do projeto V8 GitHub sob o código de conduta Chromium.

Avalie esse artigo

Relevância
Estilo/Redação

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

BT

Seu cadastro no InfoQ está atualizado? Poderia rever suas informações?

Nota: se você alterar seu email, receberá uma mensagem de confirmação

Nome da empresa:
Cargo/papel na empresa:
Tamanho da empresa:
País:
Estado:
Você vai receber um email para validação do novo endereço. Esta janela pop-up fechará em instantes.