Obrigado por visitar a devmedia.com.br!

Precisamos de você para divulgar nossos vídeos e cursos gratuitos para a comunidade.

Se você gosta da devmedia.com.br por favor dê-nos o seu clique para o Google+ e ajude outros desenvolvedores ao redor do mundo.



Obrigado por seu apoio!
Equipe DevMedia

sair sem compartilhar (x)
DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:

  #Este é um post fechado

Este post está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia. Clique aqui para saber mais sobre como abrir este post!



Artigo Java Magazine 71 - Tuning ME

Desenvolvendo Aplicações “Velozes e Furiosas” Veja dicas, macetes e ferramentas de como “tunar” a sua aplicação Java ME, a fim de tirar o melhor proveito, em desempenho e memória, do seu dispositivo móvel






Tuning ME

Desenvolvendo Aplicações “Velozes e Furiosas”

Veja dicas, macetes e ferramentas de como “tunar” a sua aplicação Java ME, a fim de tirar o melhor proveito, em desempenho e memória, do seu dispositivo móvel

De que se trata o artigo:

Para que serve:

Em que situação o tema é útil:

Tuning ME:

Tuning (do Inglês, “afinação”) consiste na prática de modificar ou afinar as características de uma determinada coisa, a fim de se obter um melhor resultado dela. Atualmente, a utilização desta expressão pode ser encontrada em ersas áreas, como por exemplo, na automobilística. No Brasil, como em outros países, a prática de “tunar” automóveis, ou seja, modificar elementos de um automóvel de linha, tem se difundido bastante. Neste caso, estas modificações podem ir desde simples elementos visuais (e.g. cor), chegando aos componentes mecânicos (e.g. motor). A idéia é transformar um automóvel de visual e potência simples, num automóvel mais bonito e potente.

Tuning é bem presente é a de desenvolvimento de software. O software, à medida que evolui ou se suas demandas atuais aumentem, pode precisar sofrer modificações, para que um novo objetivo seja atingido. Há também a situação, onde durante o desenvolvimento de um novo software, algumas medidas já devem ser tomadas pelo desenvolvedor, a fim de respeitar restrições impostas, muitas vezes, pelo ambiente de execução. Por exemplo, o ambiente de execução de um dispositivo móvel é bem restrito em memória e poder de processamento. Com isto, os desenvolvedores de aplicações móveis precisam ter sempre em mente que, todo o código produzido por eles, deve usar o mínimo de memória e processamento possível.

profilers), disponíveis no Wireless Toolkit, Netbeans Mobility Pack e Java ME Platform SDK 3, podem nos ajudar, quando sentimos que o desempenho de nossa aplicação precisa melhorar. Além de tudo isto, apresentaremos no final, uma tabela comparativa que mostra os números de algoritmos não otimizados, em comparação a outros já otimizados com as dicas apresentadas.

Esqueça o Motor 2.0

quadro “Otimização X Legibilidade”). Uma das primeiras coisas a se fazer para “enxugar” a modelagem é reduzir o número de classes, interfaces e camadas. Atenção ao uso de padrões de projeto! Quanto mais classes e interfaces, mais memória é preciso para mantê-las carregadas. Por mais que o class loader da VM da Java ME só carregue as classes por demanda, uma vez carregada, elas permanecem vivas até a aplicação ser encerrada.

Otimização X Legibilidade

 

Crie Objetos Reutilizáveis

Listagem 1 apresentamos um trecho de código que usa utiliza a classe Calculator para efetuar o cálculo do valor médio, através do método calcAverage(), dos valores contidos num dado array de inteiros. Na primeira abordagem, utilizando objetos reutilizáveis, somente um objeto calculadora é criado para efetuar o cálculo dá média (para uma boa amostra, rodaremos este cálculo 10000 vezes). Para cada iteração, o método setNumbers(int[] ns) é chamado, alterado o valor interno do objeto da calculadora. Já na segunda abordagem, sem reutilizar objetos, um novo objeto calculadora é criado a cada iteração. Como esperada, a segunda abordagem consumiu muito mais memória do que a primeira, como mostra os números na Tabela 1.

Descrição

Listagem

Classe

Otimizado

Tempo (ms)

Memória (bytes)

Tabela 1. Desempenho e consumo de memória dos algoritmos apresentados. Executado em um Nokia E65

Listagem 1. Exemplo de algoritmo que não implementa reuso de objetos e outro que implementa

// classe que simula as funções de uma calculadora.public class Calculator {  // array de inteiros utilizado no cálculo da média.  protected int[] numbers;  // construtor padrão.  public Calculator() {}  // construtor que recebe um array de inteiros para o cálculo da média.  public Calculator(int[] ns) {    numbers = ns;  }  // método utilizado para receber um array de inteiros para o cálculo da média.  public void setNumbers(int[] ns) {    numbers = ns;  }  // calcula a media dos números contidos no array de inteiros.  public double calcAverage() {    int sum = 0;    for (int i = 0; i < numbers.length; i++) {      sum += numbers[i];    }    return sum / numbers.length;  }} // classe que implementa o uso do objeto Calculadora, criando um novo objeto a cada iteração.public class NonReuseableObjectsAlgorithm … {  // executa o algoritmo.  public void run() {    int[] numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};    // início da medição    Calculator c;    for (int i = 0; i < ReuseableObjectsAlgorithm.TIMES; i++) {      c = new Calculator(numbers);      c.calcAverage();    }    // fim da medição  }  } // classe que implementa o uso do objeto Calculadora, reutilizando o mesmo objeto a cada iteração.public class ReuseableObjectsAlgorithm … {  // quantidade de iterações do loop.  public static final int TIMES = 10000;  // executa o algoritmo.  public void run() {    int[] numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};    // início da medição    Calculator c = new Calculator();


ATENÇÃO! A exibição deste artigo foi interrompida.


  #Este é um post fechado

Este post está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia. Clique aqui para saber mais sobre como abrir este post!







    1 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



José Carlos Domingues Flores
Gostei muito do artigo, traz informações e colocadas de forma bastante clara.
Parabéns.


em 26/8/2009 15:51 - Responder

 



Autor
Ernandes Mourão Júnior

é Bacharel em Informática pela Universidade de Fortaleza e desenvolvedor certificado Java (SCWCD, SCBCD e SCMAD). Atualmente exerce o cargo de Analista de Sistemas e Líder Técnico Java ME no Instituto Atlântico.


Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
0   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]
Este post está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia.

  Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!

Plano conveniência – Neste plano este post custa R$ 4,90 (Compre agora)
Esse plano permite que você compre somente um post, pagando por ele seu preço sem desconto.

Plano ocasional: Aqui este post custa: R$ 1,96 (assinante) ou R$ 2,45 (não-assinante)
Este plano é ideal para quem tem interesse em mais de um post. Você compra um mínimo de R$ 50,00 em créditos e ganha, em média, 50% de desconto no preço do post. Compre Créditos agora!

Assinatura de Créditos (Plano econômico) – Aqui este post custa R$ 1,47
Este plano é ideal para quem tem interesse em muitos posts. Com esse plano você compra R$ 180,00 em créditos e ganha, em média, 80% de desconto no preço do post. Assine este plano agora!

> Saiba mais sobre o Sistema de Créditos DevMedia
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03