使用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