728x90
반응형

 

보통 java에서 Date를 String으로 바꾼다거나  String을 Date로 바꿀때 많이 사용하는 것이 SimpleDateFormat 인데요.

 

요녀석은 Thread-Safe 하지 못한 문제 때문에 try {} catch{}로 묶어서 사용하거나 아니면 대충 쓰곤 했죠.. -_-;

 

하지만 시대가 발전하여 apache의 commons에  FastDateFormat이 나왔으니.. 두둥.

 

이녀석은 Thread-Safe 할 뿐더러 속도까지 빠르지.. SimpleDateFormat 에서 FastDateFormat로 안바꿀 이유가 없겠죠?

 

코드를 한번 보죠.

 

@Test

public void 날짜_확인() throws ParseException

{

Date yesterDate =org.apache.commons.lang.time.DateUtils.addDays( new Date(), -2);

yesterDate= org.apache.commons.lang.time.DateUtils.addSeconds(yesterDate, -1);

Format sdf = FastDateFormat.getInstance( "yyyyMMdd", Locale.getDefault());

String yesterDay = sdf.format( yesterDate);

System.out.println( "FastDateFormat : " + yesterDay);

 

yesterDay = new SimpleDateFormat( "yyyyMMdd").format( yesterDate);

System.out.println( "SimpleDateFormat : " + yesterDay);

 

}

 

이렇게 두개의 값을 찍어보면

FastDateFormat : 20130825

SimpleDateFormat : 20130825


결과값은 동일합니다. 

속도는 어떻까요?
@Test
public void 날짜_속도_Test()
{
Date yesterDate =org.apache.commons.lang.time.DateUtils.addDays( new Date(), -2);

Stopwatch watch = new Stopwatch();
watch.start();

int nMax = 1000000;
String yesterDay = "";

for ( int i=0; i < nMax; i++)
{
yesterDay =FastDateFormat.getInstance( "yyyyMMdd", Locale.getDefault()).format( yesterDate);
}
watch.stop();

System.out.format("FastDateFormat :  %d회 걸린 시간 MICROSECONDS : %d%n", nMax, watch.elapsed( TimeUnit.MICROSECONDS));

watch = new Stopwatch();
watch.start();

for ( int i=0; i < nMax; i++)
{
yesterDay = new SimpleDateFormat( "yyyyMMdd").format( yesterDate);
}
watch.stop();
System.out.format("SimpleDateFormat :  %d회 걸린 시간 MICROSECONDS : %d%n", nMax, watch.elapsed( TimeUnit.MICROSECONDS));

}

FastDateFormat :  1000000회 걸린 시간 MICROSECONDS : 1409846
SimpleDateFormat :  1000000회 걸린 시간 MICROSECONDS : 4434221

대략 2배이상 차이가 나네요? @.@

근데 FastDateFormat은  parse() 메소드를 지원하지 않더군요.
즉 String을 Date로 해주는 것은 지원이 안됩니다. 이것까지 해주면 참 좋은데..

구글링을 해보니 JodaTime을 이용하면 된다고 하네요.

그래도.. 속도도 빠르고 Thread-safe까지 하니 안바꿀 이유가 없겠습니다. ^^;
728x90
반응형
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,