在cmd提示符中观察Java代码的运行时间

在cmd提示符中观察Java代码的运行时间,java,instrumentation,Java,Instrumentation,我手里有一个java类文件,可以简单地从WindowsCMD运行它来查看输出。根据不同的输入参数,我只需要观察这个java程序的运行时间。我没有源代码,因此无法修改它以生成运行时间。请建议可能的方法来观察这一点。提前感谢。将其包装到另一个类中并运行该类。例如,如果您的类(您没有代码)被称为Runner,那么您当前可能正在以 java -jar jarContainingRunner.jar Runner 若您创建了另一个调用Runner的类,那个么您可以在该类中执行任何操作。例如,您可以调用类

我手里有一个java类文件,可以简单地从WindowsCMD运行它来查看输出。根据不同的输入参数,我只需要观察这个java程序的运行时间。我没有源代码,因此无法修改它以生成运行时间。请建议可能的方法来观察这一点。提前感谢。

将其包装到另一个类中并运行该类。例如,如果您的类(您没有代码)被称为Runner,那么您当前可能正在以

java -jar jarContainingRunner.jar Runner
若您创建了另一个调用Runner的类,那个么您可以在该类中执行任何操作。例如,您可以调用类InstrumentedRunner

public class InstrumentedRunner {

   public static void main(String... arg) {
       long start = System.currentTimeMillis();
       new Runner().run();
       long dur = System.currentTimeMillis() - start;
       System.out.format("Runner took %s milliseconds", dur);
   }
}
(我还没有测试上面的代码。)

然后你就可以跑了

java -jar jarContainingRunner.jar;jarContainingInstrumentedRunner.jar instrumentedRunner

然后它将运行Runner的run方法(假设这是您想要计时的方法)然后输出所花费的时间。

您可以编写一个批处理文件,在那里您可以调用java类,但在此之前,将开始时间保存在变量中,然后在类完成后,用开始时间减去它。

您可以编写一个简单的java程序来观察这一点。 在新代码中使用运行时执行,并观察执行时间

此新代码的示例概述:

//... before your class runs.
Runtime.getRuntime().exec("java -jar yourClass"); 
//... after your class runs.

我尝试过并发现,通过这种方式,我无法获得MyClass.class的实际运行时间,因为它一直在后台运行。而MyClassRunner只能显示其自身的运行时间。还有其他想法吗?嗨,很抱歉发这么晚了。我已经在WindowsPowershell命令的帮助下找到了解决方案。PS C:\>测量命令{java MyClass 1000 1234}天:0小时:0分钟:0秒:0毫秒:692滴答声:6925010总计天:8.01505787037037E-06总计小时:0.00019236138888889总计分钟:0.0115416833333总计秒:0.692501总计毫秒:692.501,其中1000是输入大小和1234是一个随机数种子。我尝试并发现,通过这种方式,我无法获得MyClass.class的实际运行时间,因为它一直在后台运行。而MyClassRunner只能显示其自身的运行时间。还有其他的想法吗?你能把你要测试的类的代码贴出来吗?