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)


Responder a