WebAssembly - JavaScript

Este capítulo listará a comparação entre WebAssembly e Javascript.

Javascript é uma linguagem que usamos muito dentro do navegador. Agora, com o lançamento do WebAssembly, também podemos usar o WebAssembly dentro do navegador.

A razão de o WebAssembly existir não é para substituir o javascript, mas para cuidar de certas coisas, que são difíceis de lidar com o javascript.

For example

É difícil fazer com que tarefas como reconhecimento de imagem, aplicativos CAD, aumento de vídeo ao vivo, RV e realidade aumentada, aplicativos musicais, visualização e simulação científica, jogos, edição de imagem / vídeo etc. sejam feitas com javascript.

Usando linguagens de alto nível como C / C ++, Rust, que agora podem ser compiladas para WebAssembly, é fácil realizar a tarefa mencionada acima. O WebAssembly gera um código binário fácil de executar dentro do navegador.

Então aqui está a lista de comparação feita entre Javascript e WebAssembly.

Parâmetros Javascript WebAssembly

Codificação

Você pode facilmente escrever código em Javascript. O código escrito é legível por humanos e salvo como .js. Quando usado dentro do navegador, você precisa usar uma tag <script>.

O código pode ser escrito em formato de texto em WebAssembly e é salvo como .wat. É difícil escrever o código no formato .wat. É melhor compilar o código de alguma outra linguagem de alto nível em vez de escrever do início em .wat.

Você não pode executar o arquivo .wat dentro do navegador e precisa convertê-lo para .wasm usando os compiladores ou as ferramentas online disponíveis.

Execução

O código escrito em javascript quando usado dentro do navegador deve ser baixado, analisado, compilado e otimizado.

Temos o código WebAssembly em .wasm já compilado e em formato binário.

Gestão de Memória

Javascript atribui memória quando variáveis ​​são criadas e a memória é liberada quando não é usada e adicionada à coleta de lixo.

A memória em WebAssembly é um arraybuffer que contém os dados. Você pode alocar memória usando a API Javascript WebAssembly.memory ().

A memória do WebAssembly é armazenada em um formato de array, ou seja, um modelo de memória plana que é fácil de entender e executar a execução.

A desvantagem do modelo de memória no WebAssembly é -

  • O cálculo complexo leva tempo.

  • Webassembly não oferece suporte à coleta de lixo que não permite a reutilização da memória e a memória é desperdiçada.

Tempo e desempenho de carregamento

No caso do javascript, quando chamado dentro do navegador, o arquivo javascript deve ser baixado e analisado. Posteriormente, o analisador converte o código-fonte em bytecode que o mecanismo javascript executa o código no navegador.

O mecanismo Javascript é muito poderoso e, portanto, o tempo de carregamento e o desempenho do javascript são muito rápidos em comparação ao WebAssembly.

Um dos objetivos mais importantes do WebAssembly é ser mais rápido que o JavaScript. O código Wasm gerado a partir de linguagens de alto nível é menor em tamanho e, portanto, o tempo de carregamento é mais rápido.

Mas, linguagens como GO, quando compiladas para wasm, produzem um tamanho de arquivo grande para um pequeno trecho de código.

O WebAssembly foi projetado para ser mais rápido na compilação e pode ser executado em todos os principais navegadores. O WebAssembly ainda precisa adicionar muitas melhorias em termos de desempenho em comparação ao javascript.

Depurando

Javascript é legível por humanos e pode ser depurado facilmente. Adicionar pontos de interrupção ao seu código javascript dentro do navegador permite que você depure o código facilmente.

O WebAssembly fornece o código em formato de texto, que é legível, mas ainda muito difícil de depurar. O Firefox permite que você visualize o código wasm no formato .wat dentro do navegador.

Você não pode adicionar pontos de interrupção em .wat e isso é algo que estará disponível no futuro.

Suporte de navegador

Javascript funciona bem em todos os navegadores.

Todos os principais navegadores da web têm suporte para WebAssembly.