如何用java计时
使用 System.currentTimeMillis() 计时
通过获取当前时间的毫秒数差值实现计时。适用于简单场景,精度为毫秒级。
long startTime = System.currentTimeMillis();
// 待测代码
long endTime = System.currentTimeMillis();
System.out.println("耗时:" + (endTime - startTime) + "ms");
使用 System.nanoTime() 高精度计时
提供纳秒级精度,适合测量短时间任务。注意结果可能包含系统时钟调整的影响。
long startTime = System.nanoTime();
// 待测代码
long endTime = System.nanoTime();
System.out.println("耗时:" + (endTime - startTime) + "ns");
使用 StopWatch(Spring/Apache Commons)
第三方库提供的工具类,支持分段计时和格式化输出。

Spring框架示例:
StopWatch stopWatch = new StopWatch();
stopWatch.start("task1");
// 任务1代码
stopWatch.stop();
stopWatch.start("task2");
// 任务2代码
stopWatch.stop();
System.out.println(stopWatch.prettyPrint());
Apache Commons示例:

StopWatch stopWatch = new StopWatch();
stopWatch.start();
// 待测代码
stopWatch.stop();
System.out.println("耗时:" + stopWatch.getTime() + "ms");
使用 Instant 和 Duration(Java 8+)
Java 8时间API提供更现代的计时方式,支持纳秒精度和友好输出。
Instant start = Instant.now();
// 待测代码
Instant end = Instant.now();
Duration duration = Duration.between(start, end);
System.out.println("耗时:" + duration.toMillis() + "ms");
多线程计时注意事项
在并发环境下,建议结合线程局部变量(ThreadLocal)或专用性能分析工具(如JMH)进行准确测量。避免使用共享计时变量导致数据竞争。
性能测试建议
对于基准测试,推荐使用JMH(Java Microbenchmark Harness)工具,它能自动处理JVM预热、消除编译器优化干扰等复杂因素。






