코딩 테스트를 진행하던 중
반복적인 문자 연산 문제가 나왔다.
String의 경우 문자열 연산시 새로운 String 객체를 생성하기에
오버해드가 크다 생각하여 StringBuffer를 사용해 보았다.
1
2
3
4
5
6
7
8
9
10
11
|
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
//String output = "a" + "b" + "c";
StringBuffer output = new StringBuffer("a");
output.append(b);
output.append(c);
System.out.println(output);
}
}
|
그런데 왠걸 연산에 소모되는 시간이 오히려 증가된것이 아닌가?
이유는 다음과 같았다.
Java에서 문자열 리터럴 간의 연산은
String 객체를 생성하여 수행하지 않고
컴파일 시간에 최적화되어 처리된다는 것이였다.
즉
문자열 리터럴간의 연산은 String간의 연산과 다르게 처리된다는것이다.
오버헤드(시가, 메모리)를 비교해보자면 다음과 같다
문자 리터럴 < StringBuffer, StringBuilder < String
결론 :
최고의 성능을 내고 싶다면
문자 리터럴간의 연산으로 처리하자.
'개발 > Java' 카테고리의 다른 글
String, StringBuilder, StringBuffer 유용 API 정리 (0) | 2024.03.11 |
---|---|
String 메소드 정리 (0) | 2024.03.11 |
Java Math 라이브러리 (0) | 2024.03.08 |
배열 관련 API (0) | 2024.03.07 |
어째서 인터페이스는 protected 접근제한자 허용하지 않는가? (0) | 2023.07.20 |