Magic of Love

java 성능 향상 팁 (String.split, SimeDateFormat) 본문

Software

java 성능 향상 팁 (String.split, SimeDateFormat)

NYA 2013.12.10 09:54

java 기본 클래스 중에 단순한 기능에 비하여 성능이 떨어지는 것들이 있다.
이따금 호출되는 정도라면 크게 상관 없지만, 아주 많이 반복적으로 호출되는 코드에 아래 클래스를 사용하면 성능이 떨어진다.

 

* 문자열을 단순한 구분자를 이용하여 Split 하여 String 목록을 얻을 때 :

느린 순서에서 빠른 순서. 전부 JDK 기본 클래스이다. 정규표현식을 사용할 필요가 없는 단순한 구분자 파싱을 할 때는 indexOf 를 이용하여 split 유틸 메서드를 따로 만드는 게 좋다.

- StringTokenizer 클래스 : nextToken() 반복
- String 클래스 : split() 반복 (내부적으로 Pattern 클래스 사용)
- Pattern 클래스 : compile() 후 split() 반복 (정규표현식 사용)
- String 클래스 : indexOf() 반복!

아래 링크를 참조
http://stackoverflow.com/questions/5965767/performance-of-stringtokenizer-class-vs-split-method-in-java

 

* 날짜/시간을 포매팅한 문자열을 얻을 때 :

SimpleDateFormat 의 성능이 문제가 되는 경우가 있다. 날짜 문자열의 파싱이 필요하지 않은 경우에는 FastDateFormat 을 사용하면 간단하다. 파싱도 필요한 경우에는 joda-time 을 사용하면 된다.

- SimpleDateFormat 클래스 : JDK 기본 클래스.
- FastDateFormat 클래스 : Apache commons-lang 라이브러리. 내부적으로 SimpleDateFormat 을 이용하며 format 별로 인스턴스를 만들어 Map에 넣어 캐싱한다. 파싱은 제공하지 않음.
- DateTimeFormat / DateTimeFormatter 클래스 : joda-time 라이브러리.

아래 링크를 참조
http://java-performance.info/joda-time-performance/

 

Tag
공유하기 링크
0 Comments
댓글쓰기 폼