我有几个java类文件,每个文件都有一个主要方法。由于这些是已编译的类,因此我无法修改代码并在调用类的main
方法之前和之后跟踪系统时间。有什么办法可以从JVM或任何其他工具(最好是命令行)获得此度量?如何测量预编译的java类的执行时间?
回答
您可以实现这样一个类:
class caller {
public static void main(String[] args) {
long initialTime = System.currentTimeMillis();
precompiled_class_name.main(args);
long finalTime = System.currentTimeMillis();
System.out.println("Spent time: " + (finalTime - initialTime));
}
}
如果您需要更多的内部信息,使用一个分析器像这样的:http://jrat.sourceforge.net/
java -javaagent:shiftone-jrat.jar caller
这是命令行,但你会需要桌面应用程序来读取结果。
创建一个空白的空应用程序无所事事,启动时间。
计时测试应用程序。
减去差异。
请注意,您正在遇到各种与JIT,课程加载时间等有关的问题,这些问题会影响您的测量精度。至少你需要重复测试很多次。
虽然测量本身也没有意义。如果你看看你为什么想知道这个问题,可能会更好,因为看看你是否可以问一个更有用的问题。
谢谢。做这种测量的原因是凭经验测量使用某些特定的代码片段对程序执行时间的影响。但我所有的都是.class文件。你有没有更好的方法来解决这个问题的建议? –
将类文件加载为库,编写基准测试程序以加载该库,并针对要测量的实际调用运行速度测试。了解微观基准陷阱 –
http://stackoverflow.com/questions/20655963/java-benchmarking-why-is-the-second-loop-faster/20655996#20655996 –
- 1. 测量Java执行时间
- 2. 测量java短时间运行的线程执行时间
- 3. 如何测量由Java中的进程执行的代码的执行时间?
- 4. 如何测量构建执行时间?
- 5. 测量时间执行
- 6. C++测量执行时间
- 7. 测量执行时间
- 8. 测量执行时间短
- 9. 获取java类的编译时间戳
- 10. 如何测量Java线程执行时间?
- 11. 测量多线程的执行时间
- 12. 程序执行的C++测量时间
- 13. 如何测量每一行的执行时间在C#
- 14. 如何在执行的各个阶段执行perl CGI性能测量,基准测量和时间测量?
- 15. 运行编译的Java类
- 16. C++编译时间函数执行
- 17. 执行.Net DI编译时间代理?
- 18. 使用JVMTI测量Java的执行时间
- 19. 测量Java的执行时间不起作用
- 20. 在编译类时执行Eclipse插件
- 21. 如何测量一个函数从erlang shell执行的时间?
- 22. 如何测量100次程序执行的时间?
- 23. 如何测量CNN中每层的执行时间
- 24. 如何测量黄瓜步骤的执行时间
- 25. 如何测量Google Cloud上查询的执行时间
- 26. 如何测量JSF中的动作执行时间?
- 27. 如何在Python中自动测量函数的执行时间
- 28. 如何测量npm/yarn任务/脚本的执行时间?
- 29. Windows Azure:如何测量代码的执行时间
- 30. 如何测量openmp中每个线程的执行时间?
不知道你需要什么级别的精度,但linux有内置时间命令http://www.thegeekstuff.com/2012/01/time-command-examples/ – niiru
谢谢,这应该给我一个开始。但是这段时间还没有包含JVM本身在程序运行之前加载的时间?能够跟踪JVM执行程序所用的时间会很棒。 –
它可能不会来自命令行,但你可以使用'profiler'。 –