在 Java 中制作秒表 您所在的位置:网站首页 java秒表 在 Java 中制作秒表

在 Java 中制作秒表

2024-07-15 16:33| 来源: 网络整理| 查看: 265

Java 中的秒表使用 System.nanoTime() Java 中使用 Apache Commons Lang 的秒表 在 Java 中使用 Instant 的秒表

我们可以使用我们将在下面看到的几种方法来获取 Java 中特定任务的经过时间。当任务对时间至关重要时,需要一个 java 秒表,我们想知道长时间运行的任务(如计算斐波那契数列)所花费的时间。

Java 中的秒表使用 System.nanoTime()

我们希望保持秒表时间尽可能准确,为此,我们使用 System.nanotTime() 类返回纳秒值,该值是系统计时器的最精确值。

在程序中,我们创建了两个类,Stopwatch1 和 Stopwatch。在 Stopwatch1 两种启动和停止秒表的方法中,start() 使用 System.nanoTime() 用当前的纳秒初始化 stopWatchStartTime 并设置 stopWatchRunning 的值(检查秒表是否在运行)为真。

stop() 初始化 stopWatchStopTime 并将 stopWatchRunning 设置为 false。然后,我们可以使用四个函数来计算以毫秒、秒、分钟和小时为单位的总经过时间。每个方法都有一个名为 elapsedTime 的局部变量,它存储的值是 System.nanoTime() 的值减去 stopWatchStartTime 如果秒表正在运行并且它没有运行,那么我们执行 stopWatchStopTime - stopWatchStartTime。

现在,由于每个函数中 elapsedTime 的值以纳秒为单位,我们通过将 elapsedTime 除以它持有的纳秒来将其值转换为不同的时间单位。

在 Stopwatch 类中,我们创建了一个 Stopwatch1 的对象并调用了 start() 方法。然后我们调用使用递归方法计算斐波那契数列的方法,最后调用 stop() 函数。start() 和 stop() 函数之间的时间是输出中显示的经过时间。

import java.math.BigInteger; class Stopwatch1 { private final long nanoSecondsPerMillisecond = 1000000; private final long nanoSecondsPerSecond = 1000000000; private final long nanoSecondsPerMinute = 60000000000L; private final long nanoSecondsPerHour = 3600000000000L; private long stopWatchStartTime = 0; private long stopWatchStopTime = 0; private boolean stopWatchRunning = false; public void start() { this.stopWatchStartTime = System.nanoTime(); this.stopWatchRunning = true; } public void stop() { this.stopWatchStopTime = System.nanoTime(); this.stopWatchRunning = false; } public long getElapsedMilliseconds() { long elapsedTime; if (stopWatchRunning) elapsedTime = (System.nanoTime() - stopWatchStartTime); else elapsedTime = (stopWatchStopTime - stopWatchStartTime); return elapsedTime / nanoSecondsPerMillisecond; } public long getElapsedSeconds() { long elapsedTime; if (stopWatchRunning) elapsedTime = (System.nanoTime() - stopWatchStartTime); else elapsedTime = (stopWatchStopTime - stopWatchStartTime); return elapsedTime / nanoSecondsPerSecond; } public long getElapsedMinutes() { long elapsedTime; if (stopWatchRunning) elapsedTime = (System.nanoTime() - stopWatchStartTime); else elapsedTime = (stopWatchStopTime - stopWatchStartTime); return elapsedTime / nanoSecondsPerMinute; } public long getElapsedHours() { long elapsedTime; if (stopWatchRunning) elapsedTime = (System.nanoTime() - stopWatchStartTime); else elapsedTime = (stopWatchStopTime - stopWatchStartTime); return elapsedTime / nanoSecondsPerHour; } } public class Stopwatch { public static void main(String[] args) { Stopwatch1 stopwatch1 = new Stopwatch1(); stopwatch1.start(); Fibonacci(45); stopwatch1.stop(); System.out.println("Elapsed time in milliseconds: " + stopwatch1.getElapsedMilliseconds()); System.out.println("Elapsed time in seconds: " + stopwatch1.getElapsedSeconds()); System.out.println("Elapsed time in minutes: " + stopwatch1.getElapsedMinutes()); System.out.println("Elapsed time in hours: " + stopwatch1.getElapsedHours()); } private static BigInteger Fibonacci(int n) { if (n import java.math.BigInteger; import java.util.concurrent.TimeUnit; import org.apache.commons.lang3.time.StopWatch; public class Stopwatch { public static void main(String[] args) { StopWatch stopWatch = new StopWatch(); stopWatch.start(); Fibonacci(40); stopWatch.stop(); System.out.println( "Get elapsed time in milliseconds: " + stopWatch.getTime(TimeUnit.MILLISECONDS)); System.out.println("Get elapsed time in seconds: " + stopWatch.getTime(TimeUnit.SECONDS)); System.out.println("Get elapsed time in minutes: " + stopWatch.getTime(TimeUnit.MINUTES)); System.out.println("Get elapsed time in hours: " + stopWatch.getTime(TimeUnit.HOURS)); } private static BigInteger Fibonacci(int n) { if (n


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有