Melhorando a performance de aplicacoes Java - I Um erro comum em programação Java é a alocação de várias Strings durante a concatenação de valores. Veja este programa exemplo:
import java.util.Date; public class ConcatString { public static void main(String args[]) { Date inicio = new Date(); System.out.println("Inicio: "+ inicio); String var = new String(); for (int i=0; i<10000; i++ ) { var = var + i; } Date fim = new Date(); System.out.println("Fim..: "+ fim); System.out.println("Tempo: "+ (fim.getTime() - inicio.getTime())+ " milisegundos"); } } O Código acima cria milhares de objetos String para fazer a concatenação, o que irá aumentar o uso de memória e também tempo de CPU. Além disso com tantos objetos em memória o Garbage Collector tem muito trabalho para fazer a limpeza dos objetos alocados sem referência. Resultado: a execução deste programa demorou em meu computador 23594 milisegundos. A melhor solução para estas situações é a utilização do objeto StringBuffer, que contém várias tipos do método append(), exatamente para concatenar objetos String. O código abaixo é bem semelhante ao exemplo anterior, porém agora é utilizado o objeto StringBuffer. import java.util.Date; public class ConcatStringBuffer { public static void main(String args[]) { Date inicio = new Date(); System.out.println("Inicio: "+ inicio); StringBuffer var = new StringBuffer(); for (int i=0; i<10000; i++ ) { var.append(i); } Date fim = new Date(); System.out.println("Fim..: "+ fim); System.out.println("Tempo: "+ (fim.getTime() - inicio.getTime())+ " milisegundos"); } } No código acima apenas um objeto StringBuffer é criado e todos os inteiros são adicionados a mesma instância. Resultado: a execução deste programa demorou em meu computador 181 milisegundos. Fazendo as contas este último exemplo foi de aproximadamente 136 vezes mais rápido. Sugiro que você mesmo faça o teste. Bons códigos!!! ______________________________________________________________________________________________ Handerson Ferreira Gomes Summa Technologies Boletim Dicas Java - Sua dose diária de Java. ================================================================================ [dicas-list] circula diariamente com pequenas dicas sobre a plataforma Java e é mais um serviço da Sociedade de Usuários Java - http://www.soujava.org.br *** SouJava - Fortalecendo a Comunidade Java Brasileira! *** - Para contribuir com uma dica, envie um e-mail para [EMAIL PROTECTED] - Participe de outras listas de discussão sobre a linguagem Java. Saiba mais em http://www.soujava.org.br/lista.htm -------------------------------------------------------------------------------- - Para assinar este boletim: mailto:[EMAIL PROTECTED] - Para cancelar sua assinatura: mailto:[EMAIL PROTECTED] - Dicas anteriores: http://www.mail-archive.com/dicas-list%40soujava.org.br - Para discutir sobre as dicas, acesse o Mundo OO (http://www.mundooo.com.br)