Você já precisou ler um arquivo muito grande do disco, processar linha a linha para só então guardar as linhas válidas e? Estou falando de um código como este:
File bigFile = new File("big-file.txt"); Scanner scanner = new Scanner(new FileReader(bigFile)) .useDelimiter("\n"); String validas = ""; while (scanner.hasNext()) { String linha = scanner.next(); if (linha.contains("ok")) { validas += linha; } } // faz algo com as linhas validas
O código é bem simples e parece inofensivo. Mas e se eu te falar que você pode ter problemas de performance exatamente na linha que faz a concatenação de strings?
Este é o típico caso que devemos evitar a concatenação de strings com o operador + (mais) e favorer o uso da API StringBuilder do Java. Com StringBuilder
ajudamos a JVM e resolvemos o gargalo de desempenho num código tão simples quanto aquele.
Quer saber mais sobre o uso da StringBuilder
? Assista nosso novo vídeo com a 4a dica de programação:
[Vídeo] Dica de Programação #4: StringBuilder
Como os demais vídeos que publicamos, este também é curtinho e tem uma dica que vai fazer você repensar antes de sair concatenando grandes strings no seu código.
E não esqueça: compartilha o vídeo com aquele seu amigo que acha que concatenar strings é inofensivo para aplicação.
Oi Rafael
Eis o link que lhe falei hoje no javou 7 ( 2/2016 )
Grande abraço
Opa! Vou assistir sim! Valeu por ter lembrado o/
Rafael, uma vez pesquisando em grupos, um colega comentou que ao usar o +, seria o mesmo que usar o stringbuilder, que internamente o Java entende assim, procede a informação?
Procede sim, já faz algum tempo que a JVM resolveu o problema de concatenação para o desenvolvedor.
Contudo, dependendo de como você faz a concatenação a JVM não consegue otimizar seu código e acaba por torná-lo ainda mais lento. Um caso comum é quando lidamos com um loop ao concatenar strings.