카테고리 없음

Java String concat /w plus, StringBuilder, StringBuffer, compiler optimization

devwriter 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만회 정도 가야 속도차이가 체감됩니다.

 

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

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