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

Ben*_*pal -1 java performance time milliseconds

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

Bas*_*que 6

java.time.Instant.now()

这可以使用System.currentTimeInMillis完成

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

在Java 9及更高版本的大多数实现中,您会发现Instant当前时刻以更精细的分辨率捕获当前时刻,小数分数的六位数与三位数相比.要清楚,Instant可以表示具有更精细分辨率的时刻,纳秒,但用微观捕捉当前时刻.今天的传统硬件无法在纳米分辨率下准确跟踪时间.

System.nanoTime()

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

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

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

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

避免 System.currentTimeInMillis

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

我不知道是什么可能促使这种说法.我怀疑你误解了.

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