본문 바로가기

JAVA(STS)

[java] 대용량 문자열 처리 객체 StringBuilder() (대용량 문자열 합체시 유용한 객체)와 복합 연산자 "+=" 속도 비교

<java.lang.StringBuilder 를 활용한 대용량 문자열 처리>

 - 복합연산자는 연산(+) 후 결과 값 확인하고 재 연산을 반복하는 반면, StringBuilder 혹은 StringBuffer는 값을 빠르게 쌓아서 한 번에 결과 값을 확인 하기 때문에 대용량 문자열을 빠르게 처리할 수 있다고 한다(단, StringBuilder를 활용하는 경우, 타입이 String으로 반환되는 것은 아니므로, 데이터를 활용할 때는 .toString()으로 타입 변환이 필요하다).

 

 - "java"라는 4글자의 문자열을 10,000회 반복처리 하는 구문을 통해 속도 차이를 확인해보자.

 

 

# 복합연산자 (+=) 사용 코드

package test.com;

public class TeststringBuilder {
	public static void main(String[] args) {
		System.out.println("StringBuilder");
		
		long startTime = System.currentTimeMillis();
		
		String str = "";
		for (int i = 0; i < 100000; i++) {
			str = str + "java";
		}
		System.out.println("str.length():"+str.length());
		System.out.println(System.currentTimeMillis()-startTime);
				
	}
}

 

# 복합연산자 (+=) 실행 결과 >> 5035 밀리세컨즈

 

 

# StringBuilder() 사용 코드

package test.com;

public class TeststringBuilder {
	public static void main(String[] args) {
		System.out.println("StringBuilder");
		
		long startTime = System.currentTimeMillis();
		
		StringBuilder str = new StringBuilder();
		for (int i = 0; i < 100000; i++) {
			str.append("java");
		}
		System.out.println("str.length():"+str.length());
		System.out.println(System.currentTimeMillis()-startTime);
				
	}
}

 

 

# StringBuilder() 실행 결과 >> 5밀리세컨즈

 

 

# 결론

1. 복합연산자(5035) >> StringBuilder(5)로 약 1000배 빠르게 연산처리가 가능하다.

2. 많은 양의 데이터를 합쳐서 가져와야 할 때는 StringBuilder()를 사용해야 한다.