ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Java String concat /w plus, StringBuilder, StringBuffer, compiler optimization
    카테고리 없음 2023. 2. 18. 02:37

    String concatenation compiler optimization

    public class DemoApplication {
        public static void main(String[] args) {
            String plus = "a" + "b" + "c";
    
            String variablePlus = plus + "d" + plus + "e" + plus + "f";
    
            System.out.println(variablePlus);
    
            String last = "g";
            last += "h";
            last += "i";
    
            String pool1 = "ghi";
            String pool2 = "g" + "h" + "i";
    
            System.out.println(last == pool1);
            System.out.println(pool1 == pool2);
        }
    }

    위 파일을 컴파일하면 어떻게 됩니까?

    java 5~8, 9 이상이 조금 다릅니다.

    java 5~8 은 StringBuilder를 이용하도록 코드를 컴파일해 버립니다.

    java 9 이상은 런타임에 최적화를 합니다.

     

    각 버전에서 컴파일해 보시길 추천합니다.

    단! for 문을 이용할 시에는 개발자가 StringBuilder 또는 StringBuffer 를 사용해야 합니다.

    참고로 String concat은 10만회 부터 사용불가 정도로 느려집니다.

    StringBuilder > StringBuffer(thread-safe) 둘은 1000만회 정도 가야 속도차이가 체감됩니다.

     

    보통의 경우에는 체감하기 힘듭니다.

    가독성이 좋은 쪽을 사용하기 바랍니다.

     

     

Designed by Tistory.