如何在 Java 中测量运行时间

位置:首页>文章>详情   分类: Java教程 > 编程技术   阅读(289)   2023-06-26 07:54:18

学习使用 Java 8 发布前后的各种技术计算执行时间测量经过的时间程序或一些 Java 语句。

1. 测量自 Java 8 以来经过的时间

如果我们使用 Java 8 – 我们可以尝试新的 java.time.Instantjava.time.Duration 类。在 Java 8 以下,继续本文中的下一个方法。

要获取不同时间单位的运行执行时间,请使用以下方法。它测量两个 Instant 之间的持续时间。 Instant 表示自纪元以来经过的时间。

long timeElapsed = Duration.between(startInstant, finishInstant).toMillis();
import java.text.ParseException;
import java.util.concurrent.TimeUnit;

public class Main
{
  public static void main(String[] args) throws ParseException
  {
    Instant start = Instant.now();

    //Measure execution time for this method
    methodToTime();

    Instant finish = Instant.now();

    long timeElapsed = Duration.between(start, finish).toMillis();  //in millis
  }

  private static void methodToTime() {
    try {
      TimeUnit.SECONDS.sleep(3);
    } catch (InterruptedException e) {
      e.printStackTrace();
    }
  }
}

程序输出。

3000

2.系统.nanoTime()

这是在 Java 中测量经过时间的最推荐的解决方案。它提供两次测量之间经过的时间的纳秒级精度。这是在 Java 中计算线程执行时间 的首选方法。

import java.text.ParseException;
import java.util.concurrent.TimeUnit;

public class Main
{
  public static void main(String[] args) throws ParseException
  {
    long startTime = System.nanoTime();

    methodToTime();   //Measure execution time for this method

    long endTime = System.nanoTime();

    long durationInNano = (endTime - startTime);  //Total execution time in nano seconds

    //Same duration in millis

    long durationInMillis = TimeUnit.NANOSECONDS.toMillis(durationInNano);  //Total execution time in nano seconds

    System.out.println(durationInNano);
    System.out.println(durationInMillis);
  }

  private static void methodToTime() {
    try {
      TimeUnit.SECONDS.sleep(3);
    } catch (InterruptedException e) {
      e.printStackTrace();
    }
  }
}

程序输出。

3000076434    //More precise
3000

3.系统.currentTimeMillis()

如果您不太关心纳米级精度,或者不幸的是仍然停留在旧的 Java 版本中——您应该使用 System.currentTimeMillis() 方法。

import java.text.ParseException;
import java.util.concurrent.TimeUnit;

public class Main
{
  public static void main(String[] args) throws ParseException
  {
    long startTime = System.currentTimeMillis();

    methodToTime();   //Measure execution time for this method

    long endTime = System.currentTimeMillis();

    long duration = (endTime - startTime);  //Total execution time in milli seconds

    System.out.println(duration);
  }

  private static void methodToTime() {
    try {
      TimeUnit.SECONDS.sleep(3);
    } catch (InterruptedException e) {
      e.printStackTrace();
    }
  }
}

程序输出。

3000

我们可以将上述以毫秒为单位的时间换算成小时、分钟、秒等其他时间单位,以相应的时间单位衡量执行时间

快乐学习!!

标签2: Java Date Time
地址:https://www.cundage.com/article/execution-elapsed-time.html

相关阅读

学习将java.time.LocalDate转换为java.util.Date 反之亦然,使用易于理解的 Java 示例。 1.将日期转换为LocalDate Date.getTime() 方法...
学习将 java.util.Date 转换为 java.time.LocalDateTime,反之亦然理解 Java 程序。 1. 日期 -&gtl; LocalDateTime Date.ge...
学习创建新日期、获取当前日期、解析日期为字符串或格式化Date 使用 java.util.Date类。这些用例是经常需要的,将它们放在一个地方将有助于为我们许多人节省时间。 值得注意的是,没有与...
从 LocalTime 转换为 java.sql.Time 的 Java 示例,反之亦然。 请注意,Time 类添加了格式化和解析操作以支持时间值的 JDBC 转义语法。它的日期组件应设置为“零...
获取任何给定日期的第二天或前一天的 Java 示例。该示例使用旧版 java.util.Date 类以及来自 Java 8 的 java.time.LocalDate 类。 我们可以使用此示例代...
学习在 Java 中比较两个给定日期,以找出 在通用时间轴中哪个日期早,哪个日期晚。我们将看到使用以下类的日期比较示例: LocalDate、LocalDateTime 和 ZonedDateT...
学习使用 Java 中的 ZonedDateTime 方法将 ZonedDateTime.format(DateTimeFormatter) 实例转换为字符串。 1.内置格式化程序 DateTi...
了解 Java 中的 ZonedDateTime 类,如何创建其实例和其他用例,例如解析、格式化以及添加持续时间和时间段。 一、概述 java.time.ZonedDateTime 类,在 Ja...
学习检查给定日期是否是 Java 中的周末。我们将学习使用 java.util.Date 检查作为以及 Java 8 java.time.LocalDate 类. 在给定的示例中,我们假设周末是...
学习使用 ChronoUnit.DAYS.between() 和 LocalDate.until() 方法在 Java 中计算两个日期之间的天数。 1. ChronoUnit.DAYS.betw...