2012-09-11 5 views
0

저는 손에 자바 클래스 파일을 가지고 있으며 단순히 cmd를 실행하여 출력을 볼 수 있습니다. 다른 입력 매개 변수에 따라이 Java 프로그램의 실행 시간을 관찰 할 필요가 있습니다. 나는 나를 위해 실행 시간을 생성하도록 수정할 수 없기 때문에 소스 코드가 없다. 이것을 관찰 할 수있는 방법을 제안하십시오. 미리 감사드립니다.cmd 프롬프트에서 자바 코드의 실행 시간을 관찰하십시오.

+0

당신이 악기하려고하는 클래스의 코드를 게시 할 수 있습니까? – RNJ

답변

1

다른 클래스로 감싸서 실행하십시오. 클래스가 (이 당신이 코드를 가지고 있겠지) 러너를 호출하는 경우 예를 들어, 당신은 당신이 다음 주자는 해당 클래스에서 무엇이든 할 수 호출하는 다른 클래스를 만드는 경우 현재

java -jar jarContainingRunner.jar Runner 

로 실행 될 수있다. 예를 들어 InstrumentedRunner 클래스를 호출 할 수 있습니다. (나는 위의 코드를 테스트하지 않았습니다.)

public class InstrumentedRunner { 

    public static void main(String... arg) { 
     long start = System.currentTimeMillis(); 
     new Runner().run(); 
     long dur = System.currentTimeMillis() - start; 
     System.out.format("Runner took %s milliseconds", dur); 
    } 
} 

당신은 그 당신이 시간에 원하는 방법이다 가정 (

java -jar jarContainingRunner.jar;jarContainingInstrumentedRunner.jar instrumentedRunner 

그것은 다음 주자의 run 메소드를 실행하는 것입니다 실행할 수

) 소요 시간을 출력합니다.

+0

나는이 방법을 통해 항상 백그라운드에서 실행되고 계속 실행되는 MyClass.class의 실제 실행 시간을 가져올 수 없다는 것을 알아 냈습니다. MyClassRunner는 자체 실행 시간 만 표시 할 수 있습니다. 다른 아이디어? – joarderm

+0

MyClass.class가 별도의 스레드를 시작합니까? – RNJ

+0

안녕하세요, 최근 게시물에 대한 죄송합니다. Windows Power Shell 명령을 사용하여 솔루션을 알아 냈습니다. PS C : \> 측정 커맨드 {자바 MyClass에 1,000 1,234} 일 : 0 시간 : 0 분 0 초 0 밀리 : 692 틱 : 6,925,010 TotalDays : 8.01505787037037E-06 TotalHours : 0.000192361388888889 totalminutes 및 : 0.0115416833333333 TotalSeconds : 0.692501, 총 밀리 초 : 692.501 여기서 1000은 입력 크기이고 1234는 임의의 숫자 시드입니다. – joarderm

0

당신이 할 수있는 일은 배치 파일을 작성할 수 있으며 Java 클래스를 호출 할 수 있지만 변수 저장 후 시작 시간과 클래스 종료 후 subtract 시작 시간으로 저장하십시오.

0

간단한 Java 프로그램을 작성하여이를 관찰 할 수 있습니다. 새 코드에서 런타임 실행을 사용하고 실행 시간을 관찰하십시오.

이 새로운 코드의 샘플 개요 :

//... before your class runs. 
Runtime.getRuntime().exec("java -jar yourClass"); 
//... after your class runs. 
+0

나는이 방법을 통해 항상 백그라운드에서 실행되고 계속 실행되는 MyClass.class의 실제 실행 시간을 가져올 수 없다는 것을 시도하고 발견했습니다. MyClassRunner는 자체 실행 시간 만 표시 할 수 있습니다. 다른 아이디어? – joarderm

관련 문제