【Java基础】时间比较 currentTimeMillis 与 nanoTime

本文探讨了Java中System.currentTimeMillis()与System.nanoTime()两个方法在测量时间上的差异。nanoTime()提供纳秒级精度,而currentTimeMillis()以毫秒为单位,适合于时间间隔的粗略计算。实验结果显示,nanoTime()在循环计时中比currentTimeMillis()更为精确,但在转换为日期方面不如后者直观。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

时间比较 currentTimeMillis 与 nanoTime

nanoTime() 返回的是 正在运行的 Java 虚拟机的高分辨率时间源的当前值,以纳秒为单位。

currentTimeMillis() 返回的是 当前时间与 UTC 1970 年 1 月 1 日午夜之间的差异,以毫秒为单位。

public class Elapsed {
    public static void main(String[] args) {
        long start, end;
        System.out.println("Timing for loop from 0 to 100,000,000");

        start = System.currentTimeMillis();
        System.out.println("start currentTimeMillis: " + start);
        for (long i=0; i<100000000L; i++);
        end = System.currentTimeMillis();
        System.out.println("end currentTimeMillis: " + end);

        System.out.println("Elapsed time: " + (end - start));


        System.out.println("Timing for loop from 0 to 100,000,000");

        start = System.nanoTime();
        System.out.println("nano nanoTime: " + start);

        for (long i=0; i<100000000L; i++);
        end = System.nanoTime();
        System.out.println("end nanoTime: " + end);

        System.out.println("Elapsed time: " + (end - start));
    }
}

输出结果

Timing for loop from 0 to 100,000,000
start currentTimeMillis: 1653033370155
end currentTimeMillis: 1653033370186
Elapsed time: 31
Timing for loop from 0 to 100,000,000
nano nanoTime: 261630972426900
end nanoTime: 261631001267300
Elapsed time: 28840400   // 这里等于28.84 ms

nanoTime()要比currentTimeMillis() 更加精准,但是currentTimeMillis() 转换成Date

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值