이펙티브 자바
아이템 63. 문자열 연결은 느리니 주의하라.
자바 6 이후로 성능개선이 많이 되었지만 문자열 연결은 여전히 느리다.
+= 연결 보다는 StringBuilder를 활용하는것이 좋다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
   | package com.github.sejoung.codetest.general;
  import org.springframework.util.StopWatch;
  public class StringConcat {
    private static final int LINE_WIDTH = 80;
    public String statement() {     String result = "";     for (int i = 0; i < numItem(); i++) {       result += lineForItem(i);     }     return result;   }
    public String statement2() {     StringBuilder sb = new StringBuilder(numItem()*LINE_WIDTH);     for (int i = 0; i < numItem(); i++) {       sb.append(lineForItem(i));     }
      return sb.toString();   }
 
    private String lineForItem(int i) {     return "12345678901234567890123456789012345678901234567890123456789012345678901234567890";   }
    private int numItem() {     return 100;   }
 
    public static void main(String[] args) {     StringConcat sc = new StringConcat();
      StopWatch sw = new StopWatch();
      sw.start("statement");
      sc.statement();
      sw.stop();
      sw.start("statement2");
      sc.statement2();
      sw.stop();
      System.out.println(sw.prettyPrint());     
    }
  }
 
   | 
 
실행결과
1 2 3 4 5 6 7 8 9 10 11
   | StopWatch '': running time (millis) = 22 ----------------------------------------- ms     %     Task name ----------------------------------------- 00021  095%  statement 00001  005%  statement2
 
  Process finished with exit code 0
 
 
   | 
 
결과는 여전히 StringBuilder를 사용했을때가 더 빠르다
참조