我有一个简单的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进程相关的指令.
那么,时差应该取决于我的机器的当前状态,即运行了多少个进程等?因此,在运行某些操作所需的分析时间内,这种机制不可靠吗?
icz*_*cza 12
粒度System.currentTimeMillis()取决于实现和操作系统,通常约为10毫秒.
而是使用the System.nanoTime()返回最精确的可用系统计时器的当前值,以纳秒为单位.请注意,您只能使用它来计算经过的时间,您不能将其值用作绝对时间.
例:
long startTime = System.nanoTime();
// do something you want to measure
long elapsedTimeNs = System.nanoTime() - startTime;