Desenvolvedor: entenda o nó da questão da lentidão dos apps web em relação aos apps nativos

Em um artigo looooongo e com mais de 100 citações de autores relevantes, Drew Crawford explica detalhadamente por que é pouco provável que apps web se aproximem do desempenho de apps nativos nos próximos anos.

Apps web têm várias vantagens, incluindo rodar em diversas plataformas a partir do mesmo código, e depender apenas de um navegador web suficientemente atualizado. Mas eles são geralmente mais lentos e dificilmente têm acesso ao conjunto completo de recursos de cada plataforma.

Observo há tempo que há quem, para defender as várias vantagens reais dos apps web, acaba negando suas desvantagens reais, em especial a queda no desempenho.

O Drew Crawford percebe o mesmo, mas é mais motivado que eu ツ Assim, ele foi atrás não apenas de benchmarks, mas também de posicionamentos do próprio criador do Javascript (elemento essencial dos apps multiplataforma), de outras referências sobre linguagens interpretadas e JIT, de mantenedores atuais de compiladores e ambientes de execução, e mais, e acabou escrevendo um verdadeiro tratado: Why mobile web apps are slow.

Note que lento não necessariamente significa ruim: depende dos requisitos do usuário e do perfil do app. Para algumas aplicações, código Javascript é bem mais rápido do que o necessário, mas para outras ele pode ser inviável.

O estudo de Drew Crawford define um escopo bem estrito: processamento dependente da CPU ("CPU bound") em plataformas móveis reais de 2013. Não vou tentar sintetizar seus argumentos, mas aqui vão algumas das conclusões:

  • Javascript é lento demais para uso em apps móveis em 2013 (e.g. para edição de fotos)
  • É 5x mais lento que código nativo no mesmo aparelho móvel
  • É comparável ao IE8 em um desktop
  • É 50x mais lento que código C/C++ nativo em um desktop
  • É 10x mais lento que processamento Java/Python/C# em um servidor se o seu app couber em 35MB, e piora exponencialmente a partir disso
  • O caminho mais viável para acelerá-lo é pelo aumento do desempenho do hardware
  • GC é muito mais lenta em ambientes com pouca memória do que nos desktops

Polêmico? Sem dúvida, mas mesmo se você discorda a priori, vale a pena observar os argumentos do Drew. Recomendo a leitura: Why mobile web apps are slow.

Comentar

Comentários arquivados

Mais acessados:

Artigos recentes: