为什么System.currentTimeMillis()在Linux上运行缓慢?

时间:2019-02-11 07:06:46

标签: java performance time milliseconds

我想计算每种方法的响应时间。这可以通过System.currentTimeInMillis来完成,但是我听说在Linux上速度很慢。

1 个答案:

答案 0 :(得分:6)

java.time.Instant.now()

  

这可以通过System.currentTimeInMillis

完成

该方法System.getCurrentTimeInMillisInstant.now()取代。

在Java 9和更高版本的大多数实现中,您会发现Instant以微秒的更精细分辨率捕获当前时刻,十进制小数点后六位数与三位数相乘。需要明确的是,Instant可以代表具有甚至更高的分辨率(纳秒)的时刻,但可以捕获到以微秒为单位的当前时刻。当今的常规硬件无法以纳米分辨率准确地跟踪时间。

System.nanoTime()

  

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

对于微基准测试,请使用System.nanoTime。该方法跟踪经过的纳秒级无尽循环,但与当前日期时间没有任何关系。

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

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

避免使用System.currentTimeInMillis

  

…System.currentTimeInMillis,但我听说它在Linux上运行缓慢。

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

无论如何,这个问题尚无定论。在现代Java中,无需再调用System.currentTimeInMillis