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