String Concatenation

굉장히 자주나오는 튜닝이야기인데 웹에서 특히 더욱 그러한데,
문자열을 출력할 때, 또는 질의를 조합할 때 보통 다음과 같은 일을합니다.

String text =”select * from “;
text += “table_name where a=”;
text += a.toString();

그런데 이와 같이 처리하면 String객체가 수없이 생겨나죠..

왜냐면 String이란게 immutable이므로
“a” + “b” 를하면 “a”, “b”, “a+b” 이렇게 3개가 생겨나지 원래의
“a”에 “+b”가 붙거나 그러지는 않습니다.

라는게 일반적인데 사실은 딱 그렇지는 않아요.

보통 (컴파일러가 바보는 아니니까..) 코드에
String text = “a”+”b”; 라고하면 이를 애초에 컴파일 시부터
String text=”a+b” 라고 컴파일 합니다.. 이건 심지어 JLS에 명시되어있죠..

근데 이거는 직접 써줄때나 그렇다는 것이고,
String text=”a”;
text += “+b”;
는 또 다른 얘기로, 이건 별도의 String 객체들이 생겨납니다.

근데 만약 웹이었다면,
String text=”a”;
text+=”+b”;
out.print(text);
라고 할게 아니라

String text=”a”;
out.print(text);
out.print(“+b”);
라고 하는게 낫죠..
찍기만 하면 땡이니까.

이것도 역시나 누군가의 소스를 보다가 생각나서 올림..
그리고 JMeter 좋네요..
GUI 있는 아파치 프로젝트 첨봤음.. ㅠㅠ (감동)

Similar Posts:

Post a Comment

Your email is never published nor shared.