计算Java程序的执行时间

Kak*_*rot 3 java

我想计算我的Java程序的执行时间,我很困惑我应该怎么做.我知道可以使用System.nanoTime()和System.currentTimeInMillis()计算经过的时间,但是这种方法没有考虑操作系统的基础调度机制.

例如:假设有3个进程同时运行(假设它是一个单核心系统)

过程A.

进程B(我的Java代码 - 在JVM进程中运行)

过程C.

现在,如果进程B在上午11:00开始执行并在上午11:02完成执行,则System.nanoTime()和System.currentTimeInMillis()将报告所花费的时间为2分钟.但是,过程B可能不会在整个2分钟的持续时间内运行,因为操作系统将安排另外2个进程,并且它们将在2分钟的时间间隔内运行一段时间.所以本质上java程序运行不到2分钟.

有没有办法确定Java程序本身完成执行所花费的确切时间?注意 :

  1. 我们可以多次运行代码并花费平均时间来最小化这种情况的影响,仍然很高兴知道是否有一些可靠的方法来计算执行时间

  2. 让我们假设我们需要时间的代码部分不能分解成更小的块并且需要花费大量时间来处理.

i_a*_*ero 5

如果您使用的是Java 8,则它具有Instant表示时间线上的瞬时点的类.该类在时间线上模拟单个瞬时点.这可能用于在应用程序中记录事件时间戳,如下所示:

    Instant start = Instant.now();
    try {
        Thread.sleep(7000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    Instant end = Instant.now();
    System.out.println(Duration.between(start, end));
}
Run Code Online (Sandbox Code Playgroud)

它打印: PT7.001S