카테고리 없음
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만회 정도 가야 속도차이가 체감됩니다.
보통의 경우에는 체감하기 힘듭니다.
가독성이 좋은 쪽을 사용하기 바랍니다.