Entenda o porquê a diferença entre o ART e Dalvik no Android KitKat!
Como parte do Android 4.4 KitKat, o Google decidiu introduzir uma nova forma de executar aplicativos em cima do sistema operacional Android. Vamos dar uma olhada no que esse novo tempo de execução, chamado ART traz para a mesa.
ART é um projeto secreto do Google há 2 anos de duração em curso, que visa melhorar o desempenho dos nossos dispositivos Android. Ele é baseado na promessa de que os aparelhos modernos são bastante poderoso em termos de velocidade da CPU e capacidade de memória, especialmente em comparação com a primeira geração de dispositivos Android.
ART é um projeto secreto do Google há 2 anos de duração em curso, que visa melhorar o desempenho dos nossos dispositivos Android. Ele é baseado na promessa de que os aparelhos modernos são bastante poderoso em termos de velocidade da CPU e capacidade de memória, especialmente em comparação com a primeira geração de dispositivos Android.
A palavra do Google
ART é um novo runtime Android sendo introduzida experimentalmente no KitKat 4.4 release. Esta é uma prévia do trabalho em andamento no KitKat.
Em outras palavras, o ART ainda é um projeto em andamento, considerado demasiado instável para ser introduzido como um tempo de execução padrão. Felizmente, não há pirataria especial envolvidos para obtê-lo em execução.
Você pode optar por usá-lo, vá em "Configurações> Opções Desenvolvedor> Select Runtime" e escolhendo ART.
Em outras palavras, o ART ainda é um projeto em andamento, considerado demasiado instável para ser introduzido como um tempo de execução padrão. Felizmente, não há pirataria especial envolvidos para obtê-lo em execução.
Você pode optar por usá-lo, vá em "Configurações> Opções Desenvolvedor> Select Runtime" e escolhendo ART.
ART vs Dalvik / AOT vs JIT
Apps Android são implantados em Dalvik bytecode, que é portátil, ao contrário do código nativo. A fim de ser capaz de executar o aplicativo em um dispositivo, o código tem de ser compilado para código de máquina.
Dalvik é baseado no JIT (just in time). Isso significa que cada vez que você executar um aplicativo, a parte do código necessário para a sua execução vai ser traduzido (compilado) para código de máquina naquele momento. Como esse progressos através do aplicativo, o código adicional vai ser compilado e armazenado em cache, de modo que o sistema pode reutilizar o código enquanto o aplicativo está sendo executado. Desde JIT compila apenas uma parte do código, tem um menor consumo de memória e usa menos espaço físico no dispositivo.
ART, por outro lado, compila a linguagem intermediária, Dalvik bytecode, em um binário dependente do sistema. Todo o código do aplicativo será pré-compilado durante a instalação (uma vez), eliminando assim o lag que vemos quando abrimos um app no nosso dispositivo. Sem necessidade de compilação JIT, o código deve ser executado muito mais rápido.
Exceto para o aumento da velocidade potencial, o uso de ART pode fornecer um benefício secundário importante. Como o ART executa código, máquina e aplicativo diretamente (execução nativa), não atingiu a CPU tão duro como código just-in-time de compilar em Dalvik. Menos resultados de uso de CPU em menos consumo de bateria, que é uma grande vantagem para dispositivos portáteis em geral.
Dalvik é baseado no JIT (just in time). Isso significa que cada vez que você executar um aplicativo, a parte do código necessário para a sua execução vai ser traduzido (compilado) para código de máquina naquele momento. Como esse progressos através do aplicativo, o código adicional vai ser compilado e armazenado em cache, de modo que o sistema pode reutilizar o código enquanto o aplicativo está sendo executado. Desde JIT compila apenas uma parte do código, tem um menor consumo de memória e usa menos espaço físico no dispositivo.
ART, por outro lado, compila a linguagem intermediária, Dalvik bytecode, em um binário dependente do sistema. Todo o código do aplicativo será pré-compilado durante a instalação (uma vez), eliminando assim o lag que vemos quando abrimos um app no nosso dispositivo. Sem necessidade de compilação JIT, o código deve ser executado muito mais rápido.
Exceto para o aumento da velocidade potencial, o uso de ART pode fornecer um benefício secundário importante. Como o ART executa código, máquina e aplicativo diretamente (execução nativa), não atingiu a CPU tão duro como código just-in-time de compilar em Dalvik. Menos resultados de uso de CPU em menos consumo de bateria, que é uma grande vantagem para dispositivos portáteis em geral.
Então por que não foi implementado ART mais cedo?
Vamos dar uma olhada nas desvantagens da compilação AOT.
Em primeiro lugar, o código de máquina gerado requer mais espaço do que o código de bytes existentes. Além disso, o código é pré-compilado no momento da instalação, por isso, o processo de instalação demora um pouco mais. Além disso, também corresponde a um consumo de memória maior em tempo de execução. Isso significa que menos aplicativos executados simultaneamente.
Quando primeiros dispositivos Android chegou ao mercado (como o HTC Magic), a capacidade de memória e armazenamento foram significativamente menores e apresentou um gargalo para o desempenho. Esta é a razão pela qual uma abordagem no JIT foi a opção preferida na época. Hoje, a memória é muito mais barata e, portanto, mais abundante, até mesmo em dispositivos de gama baixa, por isso o ART é um passo lógico para a frente.
Em primeiro lugar, o código de máquina gerado requer mais espaço do que o código de bytes existentes. Além disso, o código é pré-compilado no momento da instalação, por isso, o processo de instalação demora um pouco mais. Além disso, também corresponde a um consumo de memória maior em tempo de execução. Isso significa que menos aplicativos executados simultaneamente.
Quando primeiros dispositivos Android chegou ao mercado (como o HTC Magic), a capacidade de memória e armazenamento foram significativamente menores e apresentou um gargalo para o desempenho. Esta é a razão pela qual uma abordagem no JIT foi a opção preferida na época. Hoje, a memória é muito mais barata e, portanto, mais abundante, até mesmo em dispositivos de gama baixa, por isso o ART é um passo lógico para a frente.
Alguns números e critérios concretos
O pessoal do Android Police fez alguns benchmarks agradáveis, e se você estiver interessado em os números exatos, confira a seguinte ligação para mais informações.
Vamos dar uma visão geral dos resultados de suas referências:
- Maior velocidade nas operações flutuantes CPU em aprox. 20%
- Maior velocidade nas operações de RAM por aprox. 10%
- Maior velocidade nas operações de armazenamento em aprox. 10%
- Operações com números inteiros de CPU - uma ligeira vantagem vai para Dalvik
Muito claro, você não concorda? Há mais um escondido, mas muito importante benefício da ART. Quando você pergunta a usuários do iPhone como eles se sentem sobre a sensação de smartphones Android, eles muitas vezes se queixam de que o Android parece vagaroso, apesar do fato de que o hardware em ambos os telefones é top de linha. Percebido o lag / delay é o resultado da compilação JIT e mais ou menos desaparece após a mudança para ART.
Vamos dar uma visão geral dos resultados de suas referências:
- Maior velocidade nas operações flutuantes CPU em aprox. 20%
- Maior velocidade nas operações de RAM por aprox. 10%
- Maior velocidade nas operações de armazenamento em aprox. 10%
- Operações com números inteiros de CPU - uma ligeira vantagem vai para Dalvik
Muito claro, você não concorda? Há mais um escondido, mas muito importante benefício da ART. Quando você pergunta a usuários do iPhone como eles se sentem sobre a sensação de smartphones Android, eles muitas vezes se queixam de que o Android parece vagaroso, apesar do fato de que o hardware em ambos os telefones é top de linha. Percebido o lag / delay é o resultado da compilação JIT e mais ou menos desaparece após a mudança para ART.
Qualquer impacto indesejado sobre apps?
No momento, há relatos de que alguns aplicativos não estejam funcionando quando você alternar para ART, como WhatsApp e Titanium Backup.
Impacto no processo de desenvolvimento
Sendo um desenvolvedor Android, cada vez que eu faço algumas mudanças que eu quero testar, eu tenho que instalar um novo aplicativo no dispositivo. Como afirmado anteriormente, ART usa compilação AOT, o que prolonga o tempo de instalação de aplicativos, pois o bytecode Dalvik é compilado para código de máquina. Portanto, cada vez que eu implantar uma nova versão do app no meu dispositivo, eu tenho que esperar para este tempo adicional para passar para que o aplicativo otimiza o tempo de execução para ART. Isso causa um atraso significativo no processo de implantação.
Instalei algumas vezes no meu Nexus 4, para um de nossos projetos maiores, saltou de 17 ~ segundos para ~ 25 segundos.
Instalei algumas vezes no meu Nexus 4, para um de nossos projetos maiores, saltou de 17 ~ segundos para ~ 25 segundos.
Conclusão
Pessoalmente, eu vi uma melhora na velocidade e suavidade de rolagem em apps. ART faz com que a interface do usuário faça se sentir mais ágil. Neste momento, o ART não é totalmente otimizado. Espero resultados ainda melhores no futuro, depois que o Google adquire mais feedback e faz otimizações adicionais. A meu ver, os usuários finais vai certamente se beneficiar do switch, uma vez que o ART amadurece e se torna mais estável. No entanto, os desenvolvedores, que frequentemente implantar aplicativos, vai se sentir mais intensamente o impacto negativo dos tempos prolongados instalar.
Este comentário foi removido pelo autor.
ResponderExcluirMudando pra ART... vamos ver oq rola..
ResponderExcluirDois Nexus/Moto X
ResponderExcluirUm com Dalvik e só instaldos aqueles aplicativos essenciais.
O outro com ART, launcher, widgets e aplicativos que atribuem recursos como um Notification Toggle e/ou Operadora DDD.
Qual será que se apresenta mais ágil?
Levando em consideração separadamente aplicativos com o ART funcionando e aqueles que não.