• Google I/O: Como Projetar Aplicativos que Economizam Bateria

    Essa equação é verdadeira: Quanto mais rápido um aplicativo responde, e quanto mais tempo a bateria dura, mais felizes estarão os usuários com esse aplicativo. Certo? Ambos os aspectos podem ser significantemente influenciados quando um programa é desenvolvido. Os desenvolvedores devem particularmente prestar atenção para as características de transmissão de dados via telefonia móvel. Na maior parte do tempo (mas nem sempre) isso ajuda a reduzir a quantidade de dados que é gerada. As requisições que nunca são realizadas ainda sim utilizam uma quantidade bem pequena de energia, o que sugere o uso de cache sempre que possível para contornar esse problema.

    Em sua apresentação na conferência Google I/O, Ilya Grigorik apresentou um exemplo prático: quando uma versão ainda em desenvolvimento do app Pandora foi verificada por um operador de rede, descobriu-se que o mesmo era um consumidor voraz de energia. Apenas 0,2 por cento dos bytes transmitidos eram responsáveis por 46 por cento do consumo de energia desse mesmo aplicativo. E o motivo era como os padrões UMTS e LTE da telefonia móvel eram projetados, já que são otimizados para o transporte de grandes quantidades de dados em disparos rápidos.


    Ilya Grigorik explica como projetar aplicações móveis que consumam menos energia.

    Para enviar um pacote de dados, um dispositivo móvel com tecnologia 3G ativa o modem por pelo menos 100 ms (milissegundos). Quando a transmissão se completa, o modem altera para um estado de consumo reduzido de energia (FACH), porem o mesmo só estará em modo standby (idle) após dez longos segundos. Portanto, enviar um ping a cada cinco segundos é o que Grigorik afirma ter observado de forma analítica no website da CNN (cnn.com), como a melhor e mais rápida forma de acabar com a bateria de seu portátil: o modem nunca conseguirá ficar em modo standby.

    Não obstante, o uso do aplicativo pode ser monitorado em tempo real. Os pacotes de dados que serão enviados poderiam ser primeiro agrupados, e posteriormente transmitidos quando uma quantidade significante de dados estiver acumulada. Grigorik também afirma que o Google Analytics foi otimizado dessa forma.

    O salvamento de dados também beneficia o tempo de vida útil da bateria. O uso de técnicas de compressão de dados e formatos de dados mais modernos como o WebP para imagens ou o VP9 para vídeos, assim como o uso intensivo de cache, são abordagens que ajudam a economizar energia das baterias desses dispositivos portáteis. Vale ressaltar que depois do display, é o modem (e não o processador) quem mais consome energia em aparelhos de telefonia móvel.

    Cache é a Salvação

    Enquanto o recurso de cache alcança seus limites durante o uso de live stream, o conteúdo pré-gravado para streaming pode ser a saída elegante para esse caso. Algumas vezes, os próprios usuários também podem contribuir efetuando o download de certos tipos de dados de forma antecipada, como já é possível nas versões móveis do Google Maps. O uso de conexão wi-fi também é outra dica importante de redução do consumo de energia, além de reduzir a conta junto a sua operadora que cobra caro pelo uso de tecnologias 3G e 4G.

    O uso de cache também aumenta consideravelmente a velocidade de uso de um aplicativo. Quando os dados precisam ser transmitidos, a ajuda está à mão com tecnologias como HTTP 2.0 ou SPDY, além do uso de pilhas TCP otimizadas. Outro importante fator são os longos timeouts para as próprias conexões TCP. Mesmo em uma rede HSPA, o overhead de latência de rede está entre 0,5 e 3,5 segundos. Fazendo uma analogia, um usuário que trafega com seu veículo dentro de um túnel curto, encontrará a saída mais rapidamente. Grigorik afirma que os servidores possuem uma configuração muito agressiva para o timeout para TCP. Vale ressaltar que as próprias redes móveis possuem timeouts de TCP entre 5 e 30 minutos. Particularmente falando, é uma péssima ideia acordar um modem apenas para fechar uma conexão TCP após uma certa quantidade de tempo em modo idle.

    Menos é Mais

    Menos, geralmente costuma ser mais, mas algumas vezes mais também pode ser menos. A última se aplica para quantidades de dados bem pequenas. Abaixo de um certo threshold, as modernas redes móveis transferem dados no que é chamado de plano de controle: um canal que é utilizado para o controle de troca de dados entre o telefone móvel e a rede. Comparado as rotas normais de transmissão de dados, esse canal possui uma latência muito alta.

    Aparentemente, o próprio Google já vivencia isso em seu recurso de busca de aplicativos, que supostamente apresenta sugestões de aplicativos em tempo real a medida que o usuário está digitando. Latências muito altas são observadas com esse aplicativo. Descobriu-se que os dados referentes a esses caracteres individuais são tão pequenos que acabam sendo processados via plano de controle de transmissão de dados do próprio aparelho. Nesses casos, o desempenho é melhorado de forma agressiva quando os dados são transmitidos via plano de controle que varia entre redes e não pode ser alterado pelo provedor sem notificação prévia.

    A AT&T, um dos provedores de telefonia móvel nos Estados Unidos, oferece informação e ferramentas para ajudar os desenvolvedores a criarem projetos de aplicativos que sejam eficientes energeticamente. O próprio Grigorik já havia feito um rascunho prévio de seu livro sob o título High Performance Browser Networking, que está disponível de forma gratuita.

    Saiba Mais:

    - Heise Online: Google I/O: How to build battery-efficient apps (em Inglês)

    Sobre o Autor: code

    Administrador e Editor do Portal Under-Linux, desenvolvedor Linux e FOSS para Linux, autor de livros e artigos, atuando na área de Educação Digital e P&D com AI.

Visite: BR-Linux ·  VivaOLinux ·  Dicas-L