使用System.currentTimeMillis()测量时差

我有一个简单的Java程序,我想知道某些操作之间的时间差。对于这个问题,细节并不重要,但是让我们采取以下情形。

long beginTime = System.currentTimeMillis();

//Some operations. Let us asssume some database operations etc. which are time consuming.

//

long endTime = System.currentTimeMillis();

long difference = endTime - beginTime;

当代码在计算机上运行时,差异有多可靠?

让我们说,处理器开始从我的代码执行一些指令,然后为另一个进程提供上下文,该进程执行一段时间,然后返回执行与该Java进程相关的指令。

因此,时间差应取决于计算机的当前状态,即正在运行多少个进程等?因此,在分析过程中,某些操作需要运行,这种机制不可靠吗?

回答:

的粒度System.currentTimeMillis()取决于实现和操作系统,通常为10毫秒左右。

而是使用System.nanoTime()来返回最精确的可用系统计时器的当前值(以纳秒为单位)。请注意,您只能使用它来计算经过时间,而不能将其值用作绝对时间。

例:

long startTime = System.nanoTime();

// do something you want to measure

long elapsedTimeNs = System.nanoTime() - startTime;

以上是 使用System.currentTimeMillis()测量时差 的全部内容, 来源链接: utcz.com/qa/421759.html

回到顶部