A diferença de performance entre iOS e Android é fruto de debates há muito tempo. Neste artigo, você vai encontrar a explicação técnica, factual, que explica o motivo do iPhone parecer ser mais otimizado que um celular com Android em várias situações.
Muitas pessoas já perceberam que até iPhones mais antigos, conseguem manter a performance geral do sistema por mais tempo que smartphones Android da mesma época. No longe prazo, o iOS parece “melhor” que o Android. Mas por quê?
Muitos sites e canais teorizam e fazem explicações genéricas sem nunca abordar o assunto de maneira profunda. Neste artigo, vamos fundo nos dois sistemas para entender suas principais diferenças e entender de uma vez por todas por que o iOS parece mais otimizado que o Android.
Resumo:
- O iOS é mais otimizado pois os aplicativos são compilados para executar em hardware que a Apple já conhece (menos de 10 e suas variantes). Enquanto no Android, é preciso levar em conta mais de 4 mil dispositivos diferentes e suas variantes.
- No iOS, os aplicativos utilizam código “de máquina”, o Android utiliza um intermediário entre interpretador e compilador para gerar o bytecode.
- Apesar disso adicionar uma pequena carga extra ao sistema, o Android ganha em portabilidade, pois fica mais fácil garantir que os aplicativos vão funcionar em vários dispositivos diferentes.
- Para compensar essa “carga extra”, geralmente dispositivos Android precisam ter mais RAM e poder de processamento para equilibrar a competição.
Índice
1. Por que o iOS é mais otimizado que o Android?
As diferenças entre iOS e Android não são puramente estética, são sistemas muito diferentes tanto por fora como por dentro.
No iOS, tanto o sistema como os apps e jogos são compilados para serem executados exatamente no hardware para o qual são pensados. No Android, desde 4.4 (Kitkat), é utilizado um método intermediário, entre compilação e interpretação, chamado de “ART”.
A diferença de performance entre “ART” utilizado no Android e um aplicativo compilado no iOS pode ser atribuída principalmente à maneira como cada sistema operacional lida com a execução de código de aplicativos. Vamos explorar as diferenças fundamentais:
Android: Bytecode e Máquina Virtual Dalvik/ART
- Bytecode: Aplicativos Android são geralmente escritos em Java e compilados em bytecode, que é uma forma intermediária de código que é então executada por uma máquina virtual.
- Dalvik/ART: Anteriormente, o Android usava a Máquina Virtual Dalvik para executar bytecode, mas agora usa o Android Runtime (ART). Ambos convertem o bytecode em código de máquina nativo. ART compila o bytecode durante a instalação do aplicativo (compilação Ahead-of-Time – AOT), enquanto Dalvik traduzia o bytecode para código nativo em tempo de execução (Just-in-Time – JIT).
- Performance: A abordagem de usar bytecode pode introduzir uma sobrecarga devido à etapa adicional de conversão do bytecode em código nativo. No entanto, ART minimiza isso ao fazer a compilação AOT.
O ART no Android Lollipop, por exemplo usava muito mais RAM do que o Dalvik.
Outra desvantagem é que demorava mais tempo para instalar o aplicativo, pois após baixar o APK, todo o aplicativo precisa ser transformado em código de máquina, também há uma demora para realizar a atualização do sistema, pois todos os aplicativos precisavam ser reotimizados.
Para partes do aplicativo frequentemente executadas, obviamente vale a pena tê-las pré-compiladas, mas a realidade é que a maioria das partes do aplicativo são abertas pelos usuários muito, muito raramente e quase nunca vale a pena ter todo o aplicativo pré-compilado.
Foi por esse motivo que no Android Nougat, em diante, a compilação Just In Time (JIT) foi reintroduzida no Android Runtime (ART) junto com algo chamado compilação orientada por perfil. Com isso, mas memória é exigida do sistema ao instalar novos apps, contudo, no longo prazo, o sistema fica mais otimizado.
Com o compilação Ahead-of-Time – AOT, o Android conseguiu se igualar ao iOS em termos de velocidade do sistema, contudo, isso exige mais RAM e exige que o sistema seja “otimizado”, o que leva tempo, pois geralmente o Android faz isso em segundo plano e se o sistema estiver com muitos aplicativos, essa otimização vai levar bastante tempo.
iOS: Código Nativo e LLVM Compiler
- Código Nativo: Aplicativos iOS são geralmente escritos em Objective-C ou Swift e são compilados em código nativo usando o compilador LLVM.
- LLVM: O LLVM compila o código-fonte diretamente em código de máquina nativo para o processador do dispositivo, eliminando a necessidade de uma máquina virtual para interpretar o bytecode.
- Performance: A execução de código nativo geralmente oferece melhor desempenho em comparação com a execução de bytecode através de uma máquina virtual, pois o código é executado diretamente pelo hardware.
No iOS, a otimização é feito no momento de compilação de um aplicativo, ou seja, o usuário já baixa ele otimizado para o smartphone da Apple.
2. Diferenças de Performance e Otimização
Por ser compilado diretamente para o hardware onde vai ser utilizado, o iOS tem diversas vantagens em relação ao Android no quesito otimização.
- Início do Aplicativo:
- Android: Pode ser mais lento em alguns casos devido à necessidade de traduzir bytecode em código nativo, especialmente em sistemas que usavam Dalvik.
- iOS: Geralmente mais rápido, pois o código nativo é executado diretamente.
- Uso de Memória:
- Android: A máquina virtual consome alguma memória, o que pode afetar a quantidade de RAM disponível para o aplicativo.
- iOS: Como não há máquina virtual, o aplicativo pode ter acesso mais direto e eficiente à memória.
- Desempenho de CPU:
- Android: A sobrecarga de converter bytecode em código nativo pode consumir mais recursos da CPU (isso acontece a cada atualização do sistema ou atualização dos apps).
- iOS: O código nativo geralmente é mais eficiente em termos de CPU.
- Desenvolvimento e Atualizações:
- Android: O uso de bytecode permite que os desenvolvedores façam atualizações dinâmicas e modificações no código em tempo de execução.
- iOS: O código compilado é mais estático e requer recompilação para alterações.
- Portabilidade:
- Android: O bytecode é mais portátil e pode ser mais facilmente adaptado para diferentes arquiteturas de hardware.
- iOS: O código nativo é específico para a arquitetura para a qual foi compilado.
Esses passos extras que o Android precisa dar na hora de executar algo, faz com que o sistema fique em desvantagem em relação ao iOS, mas isso não significa que o Android não pode contorna isso, como de fato contorna, com otimização do sistema e mais uso de recursos.
3. Controle Integrado de Hardware e Software
a. Unificação de Design e Desenvolvimento
A Apple mantém um controle rigoroso sobre o design e a fabricação de seus dispositivos e o desenvolvimento do iOS. Esta integração entre hardware e software permite que a Apple otimize o desempenho do sistema operacional para trabalhar de maneira coesa com o hardware.
b. Consistência de Experiência
A uniformidade nos dispositivos Apple proporciona uma experiência de usuário consistente, uma vez que o iOS é projetado especificamente para um conjunto limitado de dispositivos.
Até mesmo sites renomados sobre Android como o Android Authority reconhecem que processadores da Apple são melhores que o os Snapdragon para atividades cotidianas (exemplo: navegação web e redes sociais).
Contudo, isso não quer dizer que o sistema da Apple seja perfeito e/ou que ele rode tudo sempre melhor que o Android. Travamentos e aplicativos fechando são comuns tanto no iOS quanto no Android.
4. Otimização de Aplicativos e Desenvolvimento
a. Ambiente de Desenvolvimento
Desenvolvedores de aplicativos para iOS trabalham com um número limitado de especificações de dispositivos, permitindo uma otimização mais refinada e testes abrangentes para garantir a compatibilidade e desempenho.
b. Diretrizes Estritas da App Store
A Apple impõe diretrizes rigorosas para os aplicativos em sua App Store, garantindo que os aplicativos sejam otimizados e bem desenvolvidos, proporcionando uma experiência de usuário suave e eficiente.
5. Gerenciamento de Recursos e Desempenho
a. Gerenciamento de Memória
O iOS é conhecido por seu gerenciamento de memória eficiente, garantindo que os recursos sejam alocados e liberados de maneira adequada, mantendo a fluidez na execução dos aplicativos.
Não há um recurso interno do Android chamado “Garbage collector”, um coletor de memória não usada que limpa o sistema de tempos em tempos.
Além disso, no iOS, os apps possuem um sistema de “hibernação” mais eficientes quando não estão sendo usados em primeiro plano, ou seja, na tela.
6. Atualizações do Sistema Operacional
a. Atualizações Consistentes
A Apple fornece atualizações regulares do iOS para todos os dispositivos compatíveis, garantindo que os usuários tenham acesso a melhorias de desempenho e recursos de segurança atualizados.
No Android, as atualizações ficam por conta das fabricantes dos aparelhos que costumam atrasar muito as atualizações ou lançá-las com problemas.
b. Longevidade do Dispositivo
Os dispositivos iOS tendem a receber suporte e atualizações por um período mais longo em comparação com os dispositivos Android, aumentando a vida útil e desempenho sustentado ao longo do tempo.
7. Ecossistema Apple
a. Integração de Dispositivos
A coesão entre iPhone, iPad, Mac e outros dispositivos Apple oferece uma experiência de ecossistema unificada e otimizada.
b. Continuidade e Conectividade
A capacidade de transição suave entre dispositivos e a continuidade das atividades aumentam a eficiência e a facilidade de uso dentro do ecossistema Apple.
Conclusão
Sim, no ponto de vista de compiladores e execução de código de baixo nível, o iOS é mais otimizado que o Android. Contudo, ao utilizar mais RAM e processamento, Android consegue igualar as coisas e é por isso que geralmente o smartphone Android top de linha tem uma performance similar ao iPhone do mesmo ano.
Aspecto | Vantagens do iOS | Vantagens do Android |
---|---|---|
Compilação e Execução de Código | Compilado diretamente para CPU/GPU, oferecendo desempenho otimizado | Flexibilidade de desenvolvimento com a capacidade de executar “bytecode” |
Bloatware e Software Inútil | Menos bloatware e software inútil, proporcionando uma experiência de usuário mais limpa | Possibilidade de personalização mais profunda, mesmo que venha com mais bloatware |
Padrões e Práticas de Desenvolvimento de Apps | Padrões rigorosos para desenvolvimento de apps, assegurando qualidade e segurança | Maior liberdade para desenvolvedores e uma variedade mais ampla de apps na loja |
Recompilação e Otimização de Apps | Menos necessidade de recompilação e otimização constante, proporcionando uma experiência de usuário mais suave | Maior flexibilidade em atualizações e modificações de apps e sistema |
Gerenciamento de Apps em Segundo Plano | Eficiente gerenciamento de apps em segundo plano, economizando recursos | Maior controle sobre o gerenciamento de apps em segundo plano, permitindo mais multitarefa |
Fragmentação e Compatibilidade | Menos fragmentação, facilitando o desenvolvimento de apps otimizados | Uma vasta gama de dispositivos disponíveis, oferecendo mais opções para os consumidores |
Abertura do Código Fonte e Hardware | Sistema fechado, proporcionando otimização e segurança | Sistema aberto, permitindo uma ampla personalização e compatibilidade com diversos hardwares |
Suporte e Desenvolvimento de Jogos | APIs avançadas e suporte robusto para desenvolvimento de jogos | Diversidade de APIs e suporte para uma variedade de plataformas de jogos |
Ecossistema e Integração com Outros Dispositivos | Ecossistema coeso e integrado, proporcionando uma experiência unificada | Flexibilidade para integrar com diversos ecossistemas e dispositivos |
Atualizações de Sistema | Atualizações regulares e suporte prolongado para dispositivos | Variedade de versões de SO e personalizações de fabricantes |
Segurança e Privacidade | Fortes medidas de segurança e foco na privacidade do usuário | Maior flexibilidade em termos de configurações de segurança e privacidade |
Personalização | Interface de usuário consistente e simplificada | Extensas opções de personalização e controle sobre a interface do usuário |
Com informações de: Android Authority, StackExchange e Android.com
Ótima matéria!
Ótima matéria!