推荐使用 system.nanotime() 统计 java 循环耗时,因其纳秒级精度且不受系统时间调整影响;避免使用精度低的 system.currenttimemillis();耗时 = end - start,可换算为毫秒或秒。

在 Java 循环中统计代码执行耗时,最常用、最准确的方式是使用 System.nanoTime(),它提供纳秒级精度,且不受系统时间调整影响,适合测量小段代码的运行时间。
用 System.nanoTime() 测量循环内单次或整体耗时
这是推荐做法。注意:不要用 System.currentTimeMillis() 测量短时间操作,它的精度通常只有 10–15 毫秒,容易失真。
- 在循环开始前调用
long start = System.nanoTime(); - 在循环结束后(或每次迭代结束时)调用
long end = System.nanoTime(); - 耗时(纳秒)=
end - start;转毫秒可除以1_000_000,转秒可除以1_000_000_000
示例:统计整个 for 循环耗时
long start = System.nanoTime(); for (int i = 0; i
统计循环中每次迭代的耗时分布
如果想分析性能波动(比如某次 GC 导致某次迭代明显变慢),可在循环体内单独计时:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 每次迭代开始前记录
long iterStart = System.nanoTime(); - 迭代结束后立即计算本次耗时,并可记录到数组、列表,或打印日志
- 避免在计时块内做输出(如
System.out.println),否则会严重干扰结果
小技巧:用 Math.max() 和 Math.min() 快速获取最大/最小单次耗时,辅助定位异常点。
注意 JIT 预热和测试可靠性
Java 的 JIT 编译器会在多次执行后优化字节码,直接测第一次循环往往不准。
- 正式测试前先“预热”循环几次(例如跑 1 万次空循环或目标逻辑)
- 多次运行取平均值,或用 JMH(Java Microbenchmark Harness)等专业工具,避免手动计时的常见陷阱
- 确保测试期间无其他高负载任务干扰(如 GC、磁盘 I/O、后台进程)
不建议的做法
以下方式容易导致误判,应避免:
- 用
new Date()或System.currentTimeMillis()测毫秒级以下操作 - 在循环内频繁创建对象或打印日志——这些本身就成了耗时主体
- 仅测一次就下结论,尤其未排除 JIT、GC、CPU 频率变化等干扰因素
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










