我需要多次调用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的建议或想法。
先谢谢你的帮助,
答案 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);
}