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