Java程序执行时间的2种简单方法
在Java中,有时需要了解程序的执行时间,以便进行性能优化和调试。本文将详细介绍Java程序执行时间的2种简单方法。
方法1:使用System.currentTimeMillis()
使用System.currentTimeMillis()
方法可以简单地获取当前时间的毫秒数,并在程序的不同时间点进行比较,从而计算出程序执行时间,示例如下:
public class MethodOneExample {
public static void main(String[] args) {
long startTime = System.currentTimeMillis();
// 这里是要计算时间的代码
for (int i = 0; i < 1000000; i++) {
// do something
}
long endTime = System.currentTimeMillis();
System.out.println("程序执行时间:" + (endTime - startTime) + "毫秒");
}
}
在上面的示例中,System.currentTimeMillis()
被用来获取程序开始时间和结束时间,两者相减得出程序执行时间,并输出结果。
方法2:使用JMH(Java Microbenchmark Harness)
JMH是一个Java微基准测试工具,可以很方便地对Java程序的性能进行测试。以下是用JMH进行程序执行时间测试的示例代码:
public class MethodTwoExample {
@Benchmark
@BenchmarkMode(Mode.Throughput) // 表示测试吞吐量
public void testMethod() {
// 这里是要计算时间的代码
for (int i = 0; i < 1000000; i++) {
// do something
}
}
public static void main(String[] args) throws RunnerException {
Options opt = new OptionsBuilder()
.include(MethodTwoExample.class.getSimpleName())
.forks(1) // 表示执行测试的进程数,建议设为1
.warmupIterations(1) // 表示预热的迭代次数
.measurementIterations(3) // 表示测试的迭代次数
.build();
new Runner(opt).run();
}
}
上面的示例中,@Benchmark
用来标识测试方法,@BenchmarkMode
表示测试的模式,OptionsBuilder
用来构造测试选项,.include()
表示需要测试的类,forks()
表示测试进程数,warmupIterations()
表示预热迭代次数,measurementIterations()
表示测试迭代次数。执行以上代码可以得出以下结果:
Benchmark Mode Cnt Score Error Units
MethodTwoExample.testMethod thrpt 3 16552.713 ± 118.512 ops/ms
这里的Score
表示每个操作的时间(单位为ms),从而可以推算出整个程序的执行时间。
总结
通过上述2种方法,可以准确地计算出Java程序的执行时间。System.currentTimeMillis()
可以快速简单地实现计时功能,而JMH则可以更加全面地进行性能测试。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java程序执行时间的2种简单方法 - Python技术站