2013-08-23 47 views
0

我想測量執行時間,但我不知道在哪裏但方法是在try塊或內部?如何使用try和catch執行時間的方法

ublic static void main(String[] args) { 
    long startTime = System.currentTimeMillis(); 

    try { 

     SearchDetailsDialog dialog = new SearchDetailsDialog(null); 
     dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); 
     dialog.setVisible(true); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    }long endTime = System.currentTimeMillis(); 
    long totalTime = ((endTime - startTime)/1000); 
    System.out.println("the execution time is:"); 
    System.out.println(totalTime); 
} 
+0

你的代碼的哪部分執行時間?您應該使用'System.nanoTime()'來測量執行時間。 –

+2

看起來沒問題。你有什麼問題嗎?你也可以把它放在'最後'。 'System.nanoTime()'更精確。另外,如果你除以1000,你將只獲得全部秒,所以大部分時間可能是0。 – Thilo

+0

更好地把它放在一個最後的塊或一個方面,國際海事組織。 – duffymo

回答

1

都不是。你的情況最好的是:

long startTime= System.nanoTime() ; 
try { 
    SearchDetailsDialog dialog = new SearchDetailsDialog(null); 
    dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); 
    dialog.setVisible(true); 
} catch (Exception e) { 
    e.printStackTrace(); 
} finally { 
    long endTime= System.nanoTime() ; 
    double totalTime= ((double)(endTime - startTime)/1000000000) ; 
    System.out.printf("the execution time is: %.3f seconds",totalTime); 
} 
+0

添加@ Thilo關於nanoTime的出色建議並使用了'printf' –

+0

非常感謝你的使用。如果我想測量在GUI中如何獲取搜索結果,需要使用此方法,我還有另一個問題。我是否必須放入搜索類或GUI的主要部分? – Merna

0

將這個代碼在finally塊:

long endTime = System.currentTimeMillis(); 
    long totalTime = ((endTime - startTime)/1000); 
    System.out.println("the execution time is:"); 
    System.out.println(totalTime); 
+2

並使用System.nanoTime。 – Thilo

0

同意nanoTime(),如果有,但我會把這兩個啓動和停止try和catch之間的時間捕獲,該機制吃了一段時間了。另外,你也可以在兩個點(捕獲塊內的第二個)捕獲停止時間.. println()任何地方...

+0

以及如何使用你的意思是把System.nanoTime(),而不是System.currentTimeMillis();? – Merna