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)