在java中计时操作

时间:2012-03-18 02:56:33

标签: java eclipse timing

我想在eclipse中运行我的程序,但我想看看运行程序需要多长时间。换句话说,我想计算我的计划时间。我知道在UNIX中我可以通过在命令行上的命令之前放置单词“time”来计时任何操作。但我不知道如何能够在Eclipse中操作我的操作。为了使一切更清晰,我想避免编写新方法。有没有办法可以添加到我的配置路径?有没有人知道我该怎么做?

5 个答案:

答案 0 :(得分:5)

如果您不介意添加两行代码,则可以完全用Java实现:

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

        // do whatever

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

如果需要,您也可以使用nanoTime

答案 1 :(得分:1)

在应用程序的末尾添加system.out.println以指示它运行了多长时间。

答案 2 :(得分: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)。

答案 3 :(得分:0)

如果它是一个Web应用程序,请将speed-tracer插件添加到eclipse中。它将帮助您找到所有内容的时间。

答案 4 :(得分: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();
        }
    }
});
}