2012-03-18 49 views
0

我想在eclipse中運行我的程序,但我想查看運行該程序需要多長時間。換句話說,我想要計劃我的時間。我知道在UNIX中,我可以通過在命令行的命令之前放置單詞「time」來定時執行任何操作。但是我不知道如何能夠在Eclipse中計算我的操作。爲了使一切變得更加清晰,我想避免寫新的方法。有沒有辦法可以將我的配置路徑添加到?有沒有人有我如何能做到這一點的想法?在java中計時操作

+0

你真的需要在eclipse上運行嗎?爲什麼不用終端來運行它? – 2012-03-18 02:58:21

+1

似乎你需要一個分析器。 – 2012-03-18 02:59:49

+0

我有Windows機器,我可以這樣做嗎?如果我可以在Windows上的終端上運行它,請你指導我如何做到這一點? – BBB 2012-03-18 02:59:57

回答

1

在應用程序的最後添加system.out.println以指示其運行時間。

+0

你看,我試圖避免添加任何代碼到程序 – BBB 2012-03-18 03:01:13

5

如果你不介意加入兩行代碼,就可以完全在Java中做到這一點:

public class Foo { 
    public static void main(String[] args) { 
     long ms = System.currentTimeMillis(); 

     // do whatever 

     System.out.println(System.currentTimeMillis() - ms); 
    } 
} 

你也可以使用nanoTime如果你需要它。

+0

謝謝,它的工作。 – BBB 2012-03-18 03:05:22

+0

@BBB你應該使用shutdownhook來保證你得到結果。 – Java42 2012-03-18 03:39:01

+0

@ChuckFricano你不需要關閉鉤子。你保證這兩行代碼都可以運行。另外,如果這個答案適合你,BBB,你應該[接受它](http://meta.stackexchange.com/a/5235)。 – Jeffrey 2012-03-18 14:29:04

0

將這個類的地方在你的代碼:

package your.package.name.common; 

import org.apache.log4j.Logger; 

import java.util.concurrent.TimeUnit; 

public class CProfile { 
    /** 
    * Logger for this class 
    */ 
    private static final Logger logger = Logger.getLogger(CProfile.class); 

    public static final int SECONDS_TO_ALERT = 2; 

    public static void slownessAlert(long startTime, String name) { 
     long seconds = TimeUnit.SECONDS.convert(System.nanoTime() - startTime, TimeUnit.NANOSECONDS); 
     if (seconds>SECONDS_TO_ALERT){ 
      logger.warn("slow method detected: "+name+" "+seconds+"s"); 
     } 
    } 

} 

然後用這個片段在你的代碼方式如下:

public void something() { 
    long startTime = System.nanoTime(); 

    //SOME HEAVY COMPUTATIONS 

    CProfile.slownessAlert(startTime, "something"); 
} 

它會告知您緩慢,當它發生(SECONDS_TO_ALERT> 2S )。

0

添加速度跟蹤器插件eclipse如果它是一個web應用程序。它將幫助你找出一切的時間。

0

一個簡單的方法來做到這一點,並保證你會得到結果是添加以下到您的主類的頂部。此代碼將保存應用程序的開始時間,然後添加JVM關閉掛鉤,該掛接將觸發並打印JVM關閉時的持續時間。

final static long startTime = System.currentTimeMillis(); 
static { 
Runtime.getRuntime().addShutdownHook(new Thread() { 
    public void run() { 
     try { 
      System.out.println("My program ran for "+(System.currentTimeMillis()-startTime)+" seconds."); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
}); 
}