2012-09-11 30 views
0

我手裏有一個java類文件,可以簡單地從windows cmd運行它來查看輸出。我只需要根據不同的輸入參數來觀察這個java程序的運行時間。我沒有源代碼,所以我不能修改它來爲我生成運行時間。請建議可能的方式來觀察這一點。提前致謝。在cmd提示符下觀察Java代碼的運行時間

+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:\>測量命令{的java MyClass的1000 1234} 天數:0 小時數:0 分鐘:0 秒:0 毫秒:692種 蜱:6925010個 TotalDays: 8.01505787037037E-06 TotalHours:0.000192361388888889 TotalMinutes:0.0115416833333333 TotalSeconds:0.692501 TotalMilliseconds: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

相關問題