如何衡量预编译java类的执行时间?

时间:2014-01-08 19:35:30

标签: java debugging jvm profiling

我有一些java类文件,每个文件都有一个main方法。由于这些是编译类,因此我无法在调用类的main方法之前和之后修改代码并跟踪系统时间。有什么方法可以从JVM或任何其他工具(最好是命令行)获得此度量吗?

2 个答案:

答案 0 :(得分:0)

创建一个空白的空应用程序,什么都不做,启动的时间。

为您的测试申请提供时间。

减去差异。

请注意,您遇到了JIT,类加载时间等各种问题,这些问题会影响测量的准确性。至少你需要重复测试很多次。

虽然测量本身也毫无意义。如果你看看为什么你想知道这个以及从那里看看是否有更有用的问题可能会更好。

答案 1 :(得分:0)

你可以实现这样的类:

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

这是命令行,但您需要一个桌面应用程序来读取结果。