Java프로그램을 하다본 문자열을 더하는 경우가 많습니다.

그때 주로 "string = string1+string2;"를 많이 사용 합니다.

StringBuilder을 사용하여 append를 하는 경우도 있습니다.


그럼 어떤게 빠를까요???? 그래서 한번 테스트 해보 았습니다.


테스틑 아주 간단하게 했습니다. for문을 사용하여 10000번의 루프를 돌면서 문자열을 더하는

아주 간단한 프로그램 입니다.


컴퓨터 사양은 아래와 같습니다.

CPU : i7 3.40GHz

메모리:8G

Java : 1.7_50 32bit


소스는 다음과 같습니다.


public class StringTest {
 
	public static void main(String[] args) {
 
		testString();
		testStringBuilder();
	}
 
 
	public static void testString() {
 
		System.out.println("----------------------------");
 
		long startTime = System.nanoTime();
 
		String str = "";
 
		for (int i = 0; i < 10000; i++) {
			str = str+"abcdeg"+i;
		}
 
		long endTime = System.nanoTime();
 
		long lTime = endTime - startTime;
		System.out.println("String TIME : " + lTime/1000000.0 + "(ms)");
		System.out.println("----------------------------\n");
 
	}
 
	public static void testStringBuilder() {
 
		System.out.println("----------------------------");
		long startTime = System.nanoTime();
 
		StringBuilder stb = new StringBuilder();
 
		for (int i = 0; i < 10000; i++) {
			stb.append("abcdeg").append(i);
		}
 
		long endTime = System.nanoTime();
 
		long lTime = endTime - startTime;
		System.out.println("StringBuilder TIME : " + lTime/1000000.0 + "(ms)");
		System.out.println("----------------------------\n");
	}
 
}

소스는 간단해서 별로 볼께 없죠....ㅋ



다음은 실행 결과 입니다.

[실행 결과]

str_stb.PNG

실행 결과를 보면 StringBuilder이 빠르다는게 바로 확인이 되죠?


문자열을 테스트처럼 많이 더할 일은 없지만, 두개이상 문자열을 더할 필요가 있을때는 StringBuilder를 사용하면


조금이나마 성능 개선에 도움이 될것 같습니다.





감사합니다.