Showing posts with label 자바 5. Show all posts
Showing posts with label 자바 5. Show all posts

Thursday, July 02, 2009

JDK 1.4.2 vs JDK 1.5의 문자열에 대한 결합 기능 테스트

 

JDK 1.5에서는 String결합은 내부적으로 StringBuilder클래스를 통해 처리가 된다.
 
그래서 많은 개발자들이 기존 JDK 1.4.2때 보다 빠르다고 생각을 하는데 실제로 BMT를 수행해 보니...
 
의외의 결과가 나왔다 -_-;;;
 
결론은 JDK 1.4.2의 완승...
 
JDK 1.5을 사용하는 경우 문자열 + 문자열의 결합과 같은 코딩은 시스템 성능에 무척 많은 영향을 주기 때문에
 
thread safe한 경우라면 StringBuffer(), thread unsafe한 경우라면 StringBuilder()를 사용하는게 좋겠다..

-- JDK 1.5 ---
string time : 29913 ms
buffer time : 10 ms
 
-- JDK 1.4.2 ---
string time : 11907 ms
buffer time : 11 ms
 

펼쳐두기..


java.lang.NoClassDefFoundError: java/lang/StringBuilder

 

JDK1.5로 문자열 결합에 대한 처리가 아래와 같이 변경이 이루어 졌다.


JDK 1.4

 String a = "a" + "b"; //String a = new StringBuffer("a").append("b").toString(); 


JDK 1.5

 String a = "a" + "b"; //String a = new StringBuilder("a").append("b").toString(); 

따라서 JDK 1.5에서 컴파일된 클래스를 JDK 1.4를 지원하는 WAS에서 실행하게 되면 아래와 같이

 

NoClassDefFoindError : java/lang/StringBuilder 에러가 발생되게 된다.

 

해결 방법은 JDK 1.4를 사용하여 컴파일 해야 한다. 또는 WAS의 JDK를 1.5로 업데이트 해야

 

해당 오류가 해결이 되나, WAS의 경우 JDK를 업데이트하면 실행에 문제점이 발생하거나,

 

또는 시스템 안정성을 보장 못하는 경우가 있다.

 

이클립스에서는 아래의 화면과 같이 설정을 변경해 주면 된다.