BT

Dart2js supera código JavaScript manual em teste de performance do DeltaBlue

por Zef Hemel , traduzido por Rafael Brito em 02 Jul 2013 |

O Google divulgou nova versão do compilador Dart2js, cujo código JavaScript agora supera em performance o código JS escrito à mão, segundo o teste de performance DeltaBlue, utilizado para realizar testes de performances em linguagens orientadas a objetos.

Embora superar em performance um código JavaScript manual nunca fora o objetivo do projeto Dart2js, as otimizações aplicadas como o inlining de métodos e o pré-cálculo, resultaram em alguns programas Dart mais rápidos que os equivalentes códigos em JavaScript.

O seguinte gráfico mostra como a performance do Dart no benchmark DeltaBlue tem progredido com o tempo:

A linha roxa no gráfico representa o JavaScript gerado pelo Dart2js sendo executado no engine de JavaScript V8 do Google. A linha amarela indica o código JavaScript idiomático equivalente sendo executado no V8. A linha azul na parte de cima representa código Dart sendo executado nativamente na VM do Dart. Quanto maior o número, maior a performance.

O Dart, é uma linguagem criada pelo Google para o desenvolvimento em larga escala de aplicações web, que podem ser executadas em diversos contextos:

  • Em um navegador com a Dart VM embutida. Como o projeto Dart ainda não divulgou a versão 1.0, não há navegador disponível atualmente que tenha embutido a Dart VM além do "Dartium" construído para o Chromium, que vem com o Dart SDK.
  • Em um servidor, rodando na Dart VM. A biblioteca dart:io, disponível somente em aplicações do lado servidor, oferece APIs para acesso aos arquivos de sistema, gerenciamento de processos e construção de servidores (ex.: servidores HTTP ou servidores websocket). Isto possibilita que o Dart seja utilizado em casos de uso muito semelhantes ao Node.js e habilita o desenvolvimento de ponta a ponta de aplicações no Dart.
  • Embutido em aplicações. O Dart VM pode ser embutido em aplicações arbitrárias (C/C++), para suportar scripts de aplicações com Dart.
  • Compilado para JavaScript em qualquer navegador moderno. Nenhum navegador em produção hoje suporta Dart, e ainda não está bem claro se outros navegadores além do Chrome irão embutir a Dart VM. Para continuar sendo possível executar código Dart nestes navegadores, o Dart2js transforma programas de Dart para JavaScript.

O novo compilador Dart2js, foi implementado em Dart e usa uma técnica chamada inferência global de tipos, para coletar mais informações sobre os tipos de variáveis e argumentos. Como resultado, o Dart2js pode gerar código JavaScript mais compacto e rápido.O Dart2js, não utiliza a função opcional de anotação de tipos suportada pelo Dart, pois esses tipos não são forçados em tempo de execução. O Dart é executado em modo de verificação, não reportando erros quando as restrições de tipos são invalidadas. Para garantir a correção do código gerado, o compilador ignora a anotação de tipos completamente.

Muitas outras novas otimizações são possíveis, porque o Dart é uma linguagem menos liberal que JavaScript. Por exemplo, em JavaScript é possível adicionar dinamicamente métodos a objetos, substituir métodos, baixar código dinamicamente e usar a função eval e whitestatement, o que reduz muito a quantidade de otimizações que uma máquina virtual JavaScript como a V8 pode realizar.

Já o Dart não suporta muitas dessas possibilidades. Quando o compilador Dart2js executa, ele irá saber exatamente qual código será executado, e pode eliminar código que não está sendo usado na saída, processo chamado de eliminação de código morto. Pode também inserir métodos em alguns casos, porque ao contrário do JavaScript, o Dart dá menos suporte a maus hábitos de programação.

Percebe-se como o time do Dart continua melhorando o desempenho. A linguagem e plataforma continuam sob intenso desenvolvimento e já começam a surgir adoções antecipadas.

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.

Dê sua opinião

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

Receber mensagens dessa discussão

Interessante o Artigo! by Rafael Oliveira

Muito legal o artigo, a um tempo que eu não tenho notícias do dart.

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

Receber mensagens dessa discussão

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

Receber mensagens dessa discussão

1 Dê sua opinião
Feedback geral
Bugs
Publicidade
Editorial
Marketing
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2016 C4Media Inc.
Política de privacidade
BT

We notice you’re using an ad blocker

We understand why you use ad blockers. However to keep InfoQ free we need your support. InfoQ will not provide your data to third parties without individual opt-in consent. We only work with advertisers relevant to our readers. Please consider whitelisting us.