java中的操作计时

java中的操作计时,java,eclipse,timing,Java,Eclipse,Timing,我想在eclipse中运行我的程序,但我想看看运行程序需要多长时间。换句话说,我想给我的节目计时。我知道在UNIX中,我可以通过在命令行上的命令之前放置单词“time”来计时任何操作。但我不知道如何才能在Eclipse中为我的操作计时。为了让一切更清楚一点,我想避免编写新方法。有没有一种方法可以将某物添加到我的配置路径中?有人知道我该怎么做吗?在应用程序末尾添加一个system.out.println,以指示它运行了多长时间 在应用程序末尾添加system.out.println,以指示其运行时

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

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

在应用程序末尾添加system.out.println,以指示其运行时间

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

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

        // do whatever

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

如果需要,您也可以使用它。

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

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

        // do whatever

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

如果需要,也可以使用它。

将此类放在代码中的某个位置:

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");
}

它将在发生时通知您速度缓慢(秒到秒警报>2秒)。

将此类放在代码中的某个位置:

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");
}

发生时,它会通知您慢度(秒到秒警报>2秒)如果是web应用程序,则将speed tracer插件添加到eclipse中。它将帮助您查找所有内容的时间。

如果是web应用程序,则将speed tracer插件添加到eclipse中。它将帮助您查找所有内容的时间。

一个简单的方法是将以下内容添加到你的主课。这段代码将保存应用程序启动时间,然后添加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();
        }
    }
});
}

要做到这一点并保证获得结果,一个简单的方法是将以下内容添加到主类的顶部。这段代码将保存应用程序启动时间,然后添加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();
        }
    }
});
}

您真的需要在eclipse上运行吗?为什么不用终端运行呢?我有windows机器,可以吗?如果我可以在windows终端上运行它,请您指导我如何运行?您可以使用类似的方法,但最终可能会获得更多信息,然后您需要在eclipse上运行吗?为什么不用终端运行呢?我有windows机器,可以吗?若我能在windows终端上运行它,你们能告诉我怎么做吗?你们可以使用类似的东西,但你们可能会得到比你们更多的信息nee@BBB你应该使用关机钩子来保证你得到结果。@ChuckFricano你不需要关机钩子。您可以保证这两行代码都将运行。另外,如果这个答案对你有效,BBB,你应该。@Jeffrey//doWhatever中的异常情况如何?@ChuckFricano你为什么要对一个坏了的应用程序计时?@Jeffrey还有,额外的报税表或系统如何。退出(42);或者JFrame在关闭时退出-您需要关闭钩子。@BBB您应该使用关闭钩子来保证获得结果。@ChuckFricano您不需要关闭钩子。您可以保证这两行代码都将运行。另外,如果这个答案对你有效,BBB,你应该。@Jeffrey//doWhatever中的异常情况如何?@ChuckFricano你为什么要对一个坏了的应用程序计时?@Jeffrey还有,额外的报税表或系统如何。退出(42);或者JFrame在关闭时退出-您需要关闭挂钩。