如何多次调用Java文件的Main函数?

时间:2011-05-13 18:53:43

标签: java execution-time

我需要多次调用java文件的main函数(100次)并测量它完成所需的时间。目标是将时间与其他一些文件进行比较。 [从字面上讲,我正在实施算法]。

我知道计算时间可以通过以下方式实现:

long startTime = System.currentTimeMillis();
GetExecutionTimes ext=new GetExecutionTimes();

ext.callMethod();
long endTime = System.currentTimeMillis();

System.out.println("Total elapsed time in execution of method callMethod() is :"
+ (endTime-startTime));

* 其中(“callMethod”)是我方法的名称。

但是,如果我有一个完整的java文件,并且我想在计算执行时间时从另一个类(或文件)调用它的main函数,那么有什么办法呢?

摘要:

任务1:从另一个班级多次调用java文件的main函数 任务2:计算执行所需的时间(任务1)。

非常感谢任何完成任务1和2的建议或想法。

先谢谢你的帮助,

4 个答案:

答案 0 :(得分:3)

如果你想多次调用它,我会使用一个循环。您可以多次调用main(String[])方法,但最好还是调用底层算法。

答案 1 :(得分:3)

在没有充分了解JVM,JIT,垃圾收集以及不同的非程序线程如何混淆您的基准测试的情况下,请注意执行此类基准测试。

你可以收集好的基准测试,但这样做最终会成为一个统计挑战,因为测量结果相当嘈杂(由于JVM不时调度垃圾收集,JVM暂停将代码编译为本机指令,以及本机指令通常比非本机指令快得多。

也就是说,你可以像任何其他静态方法一样调用静态main方法。请注意,如果您真的想要进行“相同”调用,则可能需要存储args数组。

答案 2 :(得分:2)

您可以尝试创建一个JUnit测试用例,并在跑步者中调用您的测试方法(内部将调用实际对象的主要方法)。这样你就可以通过JUnit获得执行时间。

答案 3 :(得分:1)

main()只是一个类中的公共静态方法,因此您可以像

一样调用它
for (int i = 0; i < 100; i++) {
    MyClassWithMain.main(null);
}