Java에서 코드 처리 시간 구하기

 

간혹 프로그램을 짜서 실행을 해보면 이상하게 느껴질 정도로 오래 걸리는 경우가 있습니다.

코드상에는 큰 문제는 없어보이는데, 실행하는 과정에서 오래 걸릴 때가 있습니다.

 

메모리 문제일 수도 있지만, 코드상에 나도 모르게 읽어드리는게 많거나 잘못된 부분을 읽어오는 부분이 있는 경우가 종종 있습니다. 그런 경우, 디버깅을 한다고 해도 오래 연산이 수행되는 부분이 어디인지 찾기 어려울 때도 있습니다. 이럴 때 코드 내에서 특정 구역 마다 시간을 비교하면 어디가 문제인지 조금 더 확실히 알수 있을 것입니다.

 

 

1. System 시간 사용

 

Java System 함수에서는 미리초 단위로 시간을 표시하는 방법이 있습니다.

 

소스상에서 아래와 같이 적어줍니다.

 

long time = System.currentTimeMillis();
System.out.println(time);

 

currentTimeMillis 이라는 것을 봐도 알 수 있듯이 현재 시간을 밀리초 단위로 표시하는 것입니다.

 

국제 표준 시각인 UTC, GMT 의 1970년 1월 1일 0시 0분 0초를 기준으로 경과한 시각을 나타내줍니다.

 

출력을 하면 아래와 같이 나타납니다.

 

1340973029104

 

 

 

2. 소스 상에서 비교하기

 

소스 상에서 실행이 되면서 시간을 오래 잡을 거 같이 의심되는 코드들이 있습니다.

 

그 사이 사이에 System.currentTimeMillis()를 넣어보면 알 수 있습니다.

아래와 같이 소스 사이에 넣어봅니다.

 

소스 내용 1
.
.
.
long time = System.currentTimeMillis();
System.out.println(time);

.
.
.
소스 내용 3
.
.
.

time = System.currentTimeMillis();
System.out.println(time);
.
.
.

 

그 다음 실행을 해서 결과를 출력하면 아래와 같이 나옵니다.

 

1340973029104
1340973029183

 

밀리초 단위로 나오기 때문에 소스 코드 사이 마다 시간이 얼마나 걸리는지 확인할 수 있습니다.

 

 

~(^_ ^ )~

 

System.currentTimeMillis()을 위와 같이 의심되는 코드 사이에 집어넣고 테스트를 합니다.

그리고 속도를 중요시 하다보는 임베디드 시스템에서는 List 와 String[]을 놓고 속도가 얼마나 걸리는 지, 두 개의 객체 중에 어느 것을 사용하는게 좀더 빠른 결과를 얻을 수 있는지 확인하기도 합니다.