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