Dando continuidade na sequência de posts sobre "Diferença entre String, StringBuilder e StringBuffer", hoje vamos comparar a velocidade de processamento entre StringBuilder e StringBuffer. Sugiro dar uma olhada nos post anteriores, caso ainda não tenha visto, clicando aqui.
StringBuilder e StringBuffer são muito rápidos para concatenação de Strings comum e exercem a mesma função, com a principal diferença que, enquanto o StringBuffer é sincronizado, o StringBuilder não!
Imagine várias threads lendo ou alterando a mesma String, e você precisa manter a consistência do do seu código, para esses casos o ideal é utilizar StringBuffer.
No teste a seguir você vai perceber que StringBuilder é mais rápido do que o StringBuffer. Veja o código abaixo:
Muito bem, vimos os problemas em usar String para concatenar utilizando o operador "+", as possíveis soluções para evitar problemas de processamento, vimos a principal diferença entre StringBuilder e StringBuffer, mas e aí? Quando eu devo utilizar o operador "+" para concatenar Strings? Existem situações em que o operador "+" é utilizado, e são aqueles onde queremos manter a qualidade do código em relação a identação, para facilitar a legibilidade do código, sem a necessidade de criar um novo objeto, que também é conhecido como "mult-line Strings".
Veja o código:
Pessoal acabamos por aqui.
Até a próxima!
Imagine várias threads lendo ou alterando a mesma String, e você precisa manter a consistência do do seu código, para esses casos o ideal é utilizar StringBuffer.
No teste a seguir você vai perceber que StringBuilder é mais rápido do que o StringBuffer. Veja o código abaixo:
- Comparando performance de StringBuilder e StringBuffer
public class ConcatenaString {
public static void main(String[] args) {
// Trecho de código para StringBuffer
StringBuffer strBuffer = new StringBuffer();
long tStart = System.currentTimeMillis();
for (int i = 0; i < 100000; i++) {
strBuffer.append("f");
}
long tEnd = System.currentTimeMillis();
long tResult = tEnd - tStart;
System.out.println("Tempo de execução com StringBuffer = " + tResult + " ms");
// Trecho de código para StringBuilder
StringBuilder strBuilder = new StringBuilder();
tStart = System.currentTimeMillis();
for (int i = 0; i < 100000; i++) {
strBuilder.append("f");
}
tEnd = System.currentTimeMillis();
tResult = tEnd - tStart;
System.out.println("Tempo de execução com StringBuilder = " + tResult + " ms");
}
}
Tempo de execução com StringBuffer = 5 ms Tempo de execução com StringBuilder = 3 ms
Veja o código:
public class ConcatenaString {
public static void main(String[] args) {
/**
* Apenas melhorando a legibilidade, sem criar novos objetos
*/
String strFinal = "Pessoal "
+ "seja bem vindo "
+ "ao blog "
+ "DevIsComing!";
/**
* Outro exemplo de uso sem compromoter o desempenho
*/
int a = 5;
int b = 15;
System.out.println("a é igual=" + a + " e b é igual=" + b + " certo!?");
}
}
Pessoal acabamos por aqui.
Até a próxima!

Nenhum comentário:
Postar um comentário