만약 자신이 만든 메서드나 클래스의 수행속도를 알고 싶다면 System.nanoTime을 이용해서 속도를 체크할 수 있다. 물론 프로파일링 툴을 써도 되지만 그냥 코드만으로 단순하게 사용하고 싶은 경우 시간측정용 메서드를 만들 수 있다.
코드는 아래와 같다.
public class StopWatch {
long startTime;
long elapsedTime=0;
StringBuffer currentName;
boolean threadFlag = false;
public StopWatch(boolean threadFlag){
currentName = new StringBuffer();
startTime = System.nanoTime();
}
public StopWatch(String message){
changeMessage("",true,true);
}
public StopWatch(String message, boolean threadFlag){
changeMessage(message, false, true);
}
public void changeMessage(String message, boolean threadFlag, boolean resetFlag){
StringBuffer threadName= new StringBuffer();
this.threadFlag = threadFlag;
if(threadFlag){
threadName.append("ThreadName=").append(Thread.currentThread().getName());
}
currentName.append("[").append(message).append(threadName).append("]");
if(resetFlag){
start();
}
}
public void start(){
startTime = System.nanoTime();
elapsedTime = 0;
}
public void stop(){
elapsedTime = System.nanoTime() - startTime;
}
public double getElapsedMS(){
if(elapsedTime ==0)
stop();
return elapsedTime/100000.0;
}
public double getElapsedNano(){
if(elapsedTime ==0)
stop();
return elapsedTime;
}
public String toString(){
if(elapsedTime ==0)
stop();
currentName.append("elapsed Time: ").append(elapsedTime/1000000.0).append("ms");
return currentName.toString();
}
}
'개발 이야기 > 유용한 Coding' 카테고리의 다른 글
자바관련 잡다한 이야기 - 객체의 행동 (0) | 2008.05.01 |
---|---|
자바관련 잡다한 이야기 - 클래스와 객체 핵심정리 (0) | 2008.05.01 |
자바관련 잡다한 이야기 - 원시 변수와 레퍼런스 (0) | 2008.05.01 |
Collection (0) | 2008.04.29 |
StringBuffer와 StringBuilder 클래스를 아시나요? (0) | 2008.04.26 |