Curso de J2ME - Parte 04 - Otimização

338 visualizações

Publicada em

Curso de J2ME - Parte 04 - Otimização

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
338
No SlideShare
0
A partir de incorporações
0
Número de incorporações
5
Ações
Compartilhamentos
0
Downloads
0
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Curso de J2ME - Parte 04 - Otimização

  1. 1. J2ME J2ME Otimização Leonardo Melo Santos leonardomelosantos@gmail.com
  2. 2. J2METópicos••• Otimização Porque otimizar? O que fazer para otimizar?• Tipos de otimização• Práticas de otimização
  3. 3. J2MEOtimização No ambiente computacional, aplicar técnicas deotimização é uma tarefa de extrema importância e relevância. Quando estamos falando de um ambiente para dispositivos móveis, torna-se fundamental otimizar.
  4. 4. J2MEPorque otimizar?• Limitações do hardware (processamento, armazenamento, memória, ...)• Tamanho da aplicação final. – Em determinados dispositivos, o tamanho máximo de uma aplicação JME não pode ultrapassar certa quantidade de kilobytes. – Espaço de armazenamento é escasso. Quanto menor o tamanho, maior o número de aplicações instaladas.• Custo de telefonia. – Quanto mais rápido e quanto menos bytes forem enviados/recebidos, mais barato sai o custo da conexão. – Ao baixar uma aplicação, quanto menor, menor o custo e menos tempo de espera.• Pequenas mudanças podem trazer benefícios consideráveis.
  5. 5. J2MEPorque otimizar? CUIDADO! Porque otimizar se nem testado foi? Porque otimizar se aplicação atende às necessidades do usuário? Tempo é muito valioso nos dias de hoje.• Martin J. Hells em “J2ME Game Programming” – “Não tente otimizar código que você pensa que é lento, otimize aquilo que você sabe que é lento”.
  6. 6. J2MEO que fazer para otimizar?• Aplicar práticas para melhorar a performance e a aplicação de uma maneira geral.• Diminuir o tamanho do código-fonte, do aplicativo como um todo e das imagens PNG.• Usar Obfuscators – O objetivo principal de obfuscation é dificultar a engenharia reversa do código Java™. – Obfuscators também reduzem o tamanho do código- fonte, “renomeando” identificadores e assinaturas de métodos.
  7. 7. J2METipos de otimização• Otimização de alto nível – Foco seria o desenho do código-fonte e seus algoritmos. – Dentre as possíveis soluções, a melhor em custo X benefício. – Algoritmo correto = solução adequada• Otimização de baixo nível – Atenção direcionada para pequenos trechos de código (às vezes, algumas linhas de código). – Maioria das vezes a atenção é voltada para o que pode ser melhorado na implementação de métodos, na sua declaração e nos seus parâmetros de entrada.
  8. 8. J2MEPráticas de otimização (1/9)• Evitar heranças principalmente as muito profundas (classe que herda de classe que herda de classe etc.) – Classes derivadas tem que gastar tempo e espaço com dados herdados mesmo que sem usá-los – Um método quando não encontrado é procurado na hierarquia de classes o que gasta tempo e processamento – Caso a subclasse não use muito dos métodos e dados da superclasse, analise se não é possível criar uma nova classe
  9. 9. J2MEPráticas de otimização (2/9)• Evitar inner classes (classes aninhadas) e classes que realmente sejam desnecessárias. – Com inner classes, o compilador inclui código extra para permitir a classe aninhada acessar os dados privados da classe de fora.
  10. 10. J2MEPráticas de otimização (3/9)• Minimizar criação de objetos. – Consome memória – Rouba ciclos de processamento – Leva a coleta de lixo, o que rouba mais ciclos• Evitar criação de objetos dentro de métodos. – Se possível, passe o objeto como parâmetro.
  11. 11. J2MEPráticas de otimização (4/9)• Evitar concatenações de Strings• Usar StringBuffer – Fácil de usar e destruir. – Menos consumo de memória. – Realocação pode ser evitada criando um StringBuffer com tamanho de buffer adequado a aplicação.
  12. 12. J2MEPráticas de otimização (5/9)• Evitar gets() e sets(). Atributos dos objetos poderiam ser public. – Desnecessariamente, a aplicação fica mais lenta e código- fonte fica maior.
  13. 13. J2MEPráticas de otimização (6/9)• Evitar declarações e instanciações dentro de iterações.
  14. 14. J2MEPráticas de otimização (7/9)• Evitar flags do tipo String. Ideal seria usar algum tipo primitivo.
  15. 15. J2MEPráticas de otimização (8/9)• Reduzir o número de parâmetros de entrada no métodos.
  16. 16. J2MEPráticas de otimização (9/9)• Destruir os objetos assim que tiver a certeza de não mais usá-los.
  17. 17. J2ME Dúvidas?

×