【问题标题】:Why System.currentTimeMillis() is slow on Linux?为什么 System.currentTimeMillis() 在 Linux 上很慢?
【发布时间】:2019-07-04 15:30:28
【问题描述】:

我想计算每个方法的响应时间。这可以用 System.currentTimeInMillis 来完成,但我听说它在 linux 上很慢。

谁能解释一下为什么这么慢?

【问题讨论】:

标签: java performance time milliseconds


【解决方案1】:

java.time.Instant.now()

这可以通过 System.currentTimeInMillis 来完成

System.getCurrentTimeInMillis 方法被 Instant.now() 取代。

在 Java 9 及更高版本的大多数实现中,您会发现 Instant 以更精细的微秒分辨率捕获当前时刻,六位小数比三位小数。需要明确的是,Instant 可以以更精细的分辨率(纳秒)表示一个时刻,但用微秒捕捉当前时刻。今天的传统硬件无法以纳秒级的分辨率准确跟踪时间。

System.nanoTime()

我想计算每个方法的响应时间。

对于微基准测试,请使用System.nanoTime。此方法跟踪经过的纳秒无限循环,但与当前日期时间无关

请注意,微基准测试很棘手。由新手执行时,结果可能不可靠。

对于严格的微基准测试,请考虑使用JMH 框架。

避免System.currentTimeInMillis

…System.currentTimeInMillis 但我听说它在 linux 上很慢。

我不知道是什么促成了这种说法。我怀疑你误会了。

无论如何,这个问题没有实际意义。没有人需要在现代 Java 中再次调用 System.currentTimeInMillis

【讨论】:

    猜你喜欢
    • 2013-10-03
    • 2014-10-16
    • 2018-08-11
    • 1970-01-01
    • 2023-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多