Labels

Tuesday, February 28, 2012

Concatenar String: String vs StringBuilder

Quando for concatenar Strings é melhor utilizar a Classe String ou StringBuilder?
Para responder essa pergunta fiz um teste simples utilizando as duas classe, segue o código:
package com.blogspot.rozolin.utils;

import java.util.Date;

public class StringUtils {

 public static void main(String[] args) {
  for (int i = 0; i < 10; i++) {
   testaStringBuilder();
   testaString();
  }

 }

 private static void testaString() {
  long tempo = new Date().getTime();

  String string = "";

  for (int i = 0; i < 10000; i++) {
   // Concatena 10000 vezes utilizando a classe String
   string = string.concat(""+i);
  }

  long milissegundo = new Date().getTime() - tempo;

  System.out.println("String demorou: " + milissegundo + " Milissegundo");
 }

 private static void testaStringBuilder() {
  long tempo = new Date().getTime();

  StringBuilder stringBuilder = new StringBuilder("");

  for (int i = 0; i < 10000; i++) {
   // Concatena 10000 vezes utilizando a classe StringBuilder
   stringBuilder.append(i);
  }

  long milissegundo = new Date().getTime() - tempo;

  System.out.println("StringBuilder demorou: " + milissegundo
    + " Milissegundo");
 }
}

Resultado:
StringBuilder demorou: 1 Milissegundo
String demorou: 116 Milissegundo
StringBuilder demorou: 1 Milissegundo
String demorou: 108 Milissegundo
StringBuilder demorou: 1 Milissegundo
String demorou: 105 Milissegundo
StringBuilder demorou: 0 Milissegundo
String demorou: 105 Milissegundo
StringBuilder demorou: 0 Milissegundo
String demorou: 105 Milissegundo
StringBuilder demorou: 1 Milissegundo
String demorou: 109 Milissegundo
StringBuilder demorou: 1 Milissegundo
String demorou: 104 Milissegundo
StringBuilder demorou: 1 Milissegundo
String demorou: 105 Milissegundo
StringBuilder demorou: 1 Milissegundo
String demorou: 104 Milissegundo
StringBuilder demorou: 1 Milissegundo
String demorou: 105 Milissegundo

A diferença é muito grande StringBuilder com certeza é muito mais rápido.

No comments:

Post a Comment