Artigo do tipo Exemplos Práticos
Recursos especiais neste artigo:
Conteúdo sobre boas práticas.
Autores: Allan Carneiro Santos, Alexandre Oliveira e Vitor Granzinoli Vellozo
Performance em aplicações Android
A performance trata-se de um requisito não funcional de uma aplicação que está diretamente relacionada ao uso eficaz dos recursos da plataforma, à eficiência, à confiabilidade e à manutenibilidade do código. Podemos também dizer que performance é a relação entre a quantidade de processamento realizado por um algoritmo, tempo gasto e recursos utilizados para executar suas tarefas.

Todos estes pontos normalmente não são analisados diretamente pelos usuários (como são para o desenvolvedor), mas o resultado final certamente será percebido por todos. E isto pode ainda ser mais crítico quando a aplicação analisada é utilizada em dispositivos móveis.

Nestes dispositivos, a eficiência do código é apenas um dos pontos a serem tratados, pois aplicações que utilizam conexão com a internet, gráficos em OpenGL, banco de dados e aplicativos que executam em segundo plano, raramente se comportam da mesma forma em todos os dispositivos. É de responsabilidade do desenvolvedor a detecção e otimização dos pontos que afetam a execução de sua aplicação.

O objetivo deste artigo é introduzir ao leitor os principais conceitos e ferramentas para avaliar e otimizar a performance de aplicações para a plataforma Android, abordando as melhores práticas e a prevenção de erros.

Após a leitura deste artigo, o desenvolvedor terá os conceitos indispensáveis sobre gerenciamento de memória, ferramentas para análise, depuração e otimização de aplicações. Com isso, é possível focar as energias na criação de produtos eficazes e performáticos.


Em que situação o tema é útil
Este tema destina-se aos desenvolvedores de todos os níveis, preocupados com a criação de aplicações responsivas e de alta qualidade, que possam ser executadas nos mais diversos dispositivos disponíveis no mercado. Além disso, um código eficiente pode economizar diversas horas com manutenção, que poderiam ser investidas na evolução do aplicativo e até mesmo no desenvolvimento de novas funcionalidades.

Após o lançamento do sistema operacional Android em Setembro de 2008, seguiram-se diversas versões, cada qual adicionando novos recursos e melhorias, visando facilitar a vida dos desenvolvedores e melhorar a experiência dos usuários.

Quando distribuímos aplicações, nos deparamos com uma realidade totalmente diferente do ambiente de desenvolvimento, onde os recursos são relativos à máquina do desenvolvedor e aos dispositivos utilizados para teste.

Nos diversos dispositivos onde a aplicação pode ser executada, os recursos nem sempre são abundantes e por isto, o sistema operacional realiza um monitoramento minucioso em busca de processos que fazem uso indevido destes recursos, e no pior dos casos, ocorre o encerramento da aplicação.

A utilização excessiva de recursos e eficiência do código são apenas alguns pontos a serem tratados, pois aplicações que utilizam conexão com a internet, gráficos em OpenGL, banco de dados e aplicativos que executam em segundo plano, raramente se comportam da mesma forma em todos os dispositivos, sendo o desenvolvedor o responsável por detectar e otimizar os pontos que afetam a execução de sua aplicação.

Dependendo do cenário, o inimigo do desenvolvedor pode ir além dos problemas técnicos, pois problemas relacionados à performance quase sempre afastam o público alvo, raramente fiel a uma aplicação, devido à vasta concorrência no mercado.

Tendo isto em mente, um código eficiente pode economizar diversas horas com manutenção, que poderiam ser investidas na evolução do aplicativo e até mesmo na concretização de novas funcionalidades.

A utilização excessiva de recursos e eficiência do código são apenas alguns pontos a serem tratados, pois aplicações que utilizam conexão com a internet, gráficos em OpenGL, banco de dados e aplicativos que executam em segundo plano, raramente se comportam da mesma forma em todos os dispositivos, sendo o desenvolvedor o responsável por detectar e otimizar os pontos que afetam a execução de sua aplicação.

Dependendo do cenário, o inimigo do desenvolvedor pode ir além dos problemas técnicos, pois problemas relacionados à performance quase sempre afastam o público alvo, que raramente é fiel a uma aplicação, devido à vasta concorrência no mercado.

Assim, um código eficiente pode economizar diversas horas com manutenção, que poderiam ser investidas na evolução do aplicativo e até mesmo na concretização de novas funcionalidades.

Performance

Performance na área de desenvolvimento é um termo normalmente utilizado para avaliar o tempo de execução de um algoritmo, levando-se em conta a velocidade e o consumo de recursos.

Podemos dizer que performance é a relação entre a quantidade de processamento realizado por um algoritmo, tempo gasto e recursos utilizados para executar suas tarefas, podendo ainda sofrer influência de fatores internos e externos.

Fatores internos são instruções como um cálculo matemático ou a apresentação de dados em uma tela. Fatores externos são variáveis como ambiente, rede e serviços que podem afetar a eficiência de execução da aplicação.

Elevando o conceito de performance a algo mais abrangente, podemos incluir a experiência do usuário, o tempo de resposta e a usabilidade da aplicação.

Profiling

Profiling, na engenharia de software, é a maneira de analisar programas dinamicamente para medir, entre diversas coisas, os recursos utilizados por uma aplicação em seu ambiente, com o objetivo de alcançar a melhor otimização, auxiliando na correção de bugs e certamente na qualidade final do produto.

Existem diferentes técnicas que extraem informações relacionadas principalmente à complexidade, ao tempo de execução e ao consumo de memória ao se executar trechos específicos de código.

...
Quer ler esse conteúdo completo? Tenha acesso completo