본문 바로가기

Java dev/Java Basic

String과 StringBuffer 속도 비교


String과 StringBuffer 속도 비교


public class TestStringBuffer {
  public static void main(String[] args) {
    //  String 의 속도 테스트
    long start = System.currentTimeMillis();//현재 초
    String str = "Hello";
    for (int i = 0; i < 10000; i++) {  //  만번 반복
      str += "JavaWorld";//HelloJavaWorldJavaWorld....
    }//for
    long end = System.currentTimeMillis();
    long elap = end - start;
    System.out.println("걸린 시간 : " + elap + "밀리 초");//예) 걸린 시간 : 2390밀리 초
    System.out.println("걸린 시간 : " + elap/1000 + " 초");//예) 걸린 시간 : 2 초
    //  StringBuffer의 속도 체크
    long startTime = System.currentTimeMillis();
    StringBuffer sb = new StringBuffer("Hello");
    for (int i = 0; i < 10000; i++) {
      sb.append("JavaWorld");
    }//for
    long endTime = System.currentTimeMillis();
    long elapTime = endTime - startTime;
    System.out.println("걸린 시간 : " + elapTime + " 밀리 초");//예) 걸린 시간 : 16 밀리 초
  }//main
}
//end

실제로 String으로 만번 더할 경우는 없을 것입니다.

그러나, 속도 비교를 위해서 테스트해 볼 필요는 있습니다.

실무에서 SQL 문장을 String 으로 했을 경우와 StringBuffer로 했을 경우 속도 차이가 큽니다.

물론, 최근 JDK는 최적화가 많이 되어 String을 써도 괜챦다고들 하지만

Java EE의 경우 등 예전 버젼의 JDK 를 쓰는 경우도 많고 기타 등등의 이유로

역시 StringBuffer 를 쓰는 것이 좋을 것입니다.