Essa eh facil

11 respostas
D

Essa eh facil… concatencacao de strings. Como otimizar esse programa, em relacao ao tempo de processamento?

public class StringConcat {

	static public void main(String args[]) {
	
	String abc = "abc";
	String cde = "cde";

	for (int i=0; i<1000000; i++)
		abc += cde;
	}
}

11 Respostas

D

Aff…
e eu por incrivel que pareça fui executar isso… heeh

Com thread

Thread t = new Thread(this); t.setPriority(Thread.MIN_PRIORITY); t.start();

certu?

M

StringBuffer otimizaria nao?

M

pergunta estranha, mas tb aposto no StringBuffer

D

“diogoacl”:
Aff…
e eu por incrivel que pareça fui executar isso… heeh

Com thread

Thread t = new Thread(this); t.setPriority(Thread.MIN_PRIORITY); t.start();

certu?

Heheh… fica um eternidade executando, mas nao resulta nada rs…

Ah, posso dar a resposta jah,ou espera mais um pouco?!!?

Essa questao caiu numa prova q o CPqD aplicou aqui na USP-SC

D

hehehehe, simplesmente sentei a maquina em processamento!

bom eu por mim pode dar a resposta…

M

Cade a resposta…???

D

StringBuffer não é mais “pesado” q o String não? Ate quando tava estudando lembrei q StringBuffer poderia ser modificado e por isso é mais pesado. OFF: Como eu poderia me dizer pesado em Javanes hehe?
:cool:

M

o nosso amigo nao responde eu fui procurar a resposta me corrija se estiver errado:

public class StringConcat { 

   static public void main(String args[]) { 
    
   StringBuffer abc = "abc"; 


   for (int i=0; i<1000000; i++) 
      abc.append("cde"); 
   } 
}

Realmente as Strings são imutaveis mas isso nao as torna mais rapidas:

fonte

Resumindo

Valeu!!!

D

Ae pessoal, desculpa a demora, naum consegui entrar na net no fds… Entao, o marcelo está corretissimo. Em Java String é imutavel, ou seja, qndo vc altera o contedudo de um objeto String, na verdade vc está criando outro objeto, por isso q fica lento demais esse exemplo, porem com StringBuffer isso nao ocorre…

Okay?! :okok:

F

indo um pouco mais longe ehhehehe acho q desse jeito fica ainda mais rapido:

public class StringConcat {
  public static void main(String args[]) {
   StringBuffer sb = new StringBuffer(3000003);
   sb.append("abc");
   for (int i = -1; ++i < 1000000;) sb.append("cbe");
  }
}

se n for especificado o tamanho do StringBuffer, ele vai iniciar com 10 (se n me engano) por padrao, e qndo essa capacidade inicial for exedida, ele vai criar outro objeto com uma capacidade um pouco maior… se n for especificado o tamanho talvez fique ateh mais lento q com string…

M

“darkseid”:
Ae pessoal, desculpa a demora, naum consegui entrar na net no fds… Entao, o marcelo está corretissimo. Em Java String é imutavel, ou seja, qndo vc altera o contedudo de um objeto String, na verdade vc está criando outro objeto, por isso q fica lento demais esse exemplo, porem com StringBuffer isso nao ocorre…

Okay?! :okok:

Na verdade um char cairia bem neh, eh a melhor maneira de otimizar a String =)

Considerada um dos pontos mais fracos da performance do java…

char [] antes e new String(char []) depois…

Criado 28 de outubro de 2004
Ultima resposta 3 de nov. de 2004
Respostas 11
Participantes 7