如何在Java中測量經過時間?


一般來說,經過時間是指事件從起點到終點的這段時間。以下是幾種在Java中查詢經過時間的方法:

使用currentTimeMillis()方法

currentTimeMillis()方法以毫秒為單位返回當前時間。要查詢方法的經過時間,您可以獲取所需方法執行前後時間值之間的差值。

示例

線上演示

public class Example {
   public void test(){
int num = 0;
      for(int i=0; i<=50; i++){  
         num =num+i;
         System.out.print(num+", ");
      }  
   }
   public static void main(String args[]){  
      //Start time
      long begin = System.currentTimeMillis();
      //Starting the watch
      new Example().test();
      //End time
      long end = System.currentTimeMillis();
      long time = end-begin;
      System.out.println();
      System.out.println("Elapsed Time: "+time +" milli seconds");
   }
}

輸出

0, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91, 105, 120, 136, 153, 171, 190, 210, 231, 253, 276, 300, 325, 351, 378, 406, 435, 465, 496, 528, 561, 595, 630, 666, 703, 741, 780, 820, 861, 903, 946, 990, 1035, 1081, 1128, 1176, 1225, 1275,
Elapsed Time: 4 milli seconds

使用nanoTime()方法

nanoTime()方法以納秒為單位返回當前時間。要查詢方法的經過時間,您可以獲取所需方法執行前後時間值之間的差值。

示例

線上演示

public class Example {
   public void test(){
      int num = 0;
      for(int i=0; i<=50; i++){  
         num =num+i;
         System.out.print(num+", ");
      }  
   }
   public static void main(String args[]){  
      //Start time
      long begin = System.nanoTime();
      //Starting the watch
      new Example().test();
      //End time
      long end = System.nanoTime();
      long time = end-begin;
      System.out.println();
      System.out.println("Elapsed Time: "+time);
   }
}

輸出

0, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91, 105, 120, 136, 153, 171, 190, 210, 231, 253, 276, 300, 325, 351, 378, 406, 435, 465, 496, 528, 561, 595, 630, 666, 703, 741, 780, 820, 861, 903, 946, 990, 1035, 1081, 1128, 1176, 1225, 1275,
Elapsed Time: 1530200

使用Instant類

Instant類的now()方法返回當前時間,Duration.between()方法返回給定兩個時間值之間的差值,以獲取經過時間,在所需方法執行前後檢索時間值,並使用Duration.between()方法檢索持續時間。

示例

線上演示

import java.time.Duration;
import java.time.Instant;
public class Example {
   public void test(){
      int num = 0;
      for(int i=0; i<=50; i++){  
         num =num+i;
         System.out.print(num+", ");
      }  
   }
   public static void main(String args[]) {  
      //Starting time
      Instant start = Instant.now();
      new Example().test();
      //End time
      Instant end = Instant.now();
      long time = Duration.between(start, end).toMillis();
      System.out.println();
      System.out.println(time+" Milli seconds");

   }
}

輸出

0, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91, 105, 120, 136, 153, 171, 190, 210, 231, 253, 276, 300, 325, 351, 378, 406, 435, 465, 496, 528, 561, 595, 630, 666, 703, 741, 780, 820, 861, 903, 946, 990, 1035, 1081, 1128, 1176, 1225, 1275,
3 Milli seconds

使用StopWatch類

Apache commons庫提供了一個名為Stopwatch的類,它提供start()、stop()和getTime()方法來查詢方法執行所需的時間。

以下是此包的Maven檔案:

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.7</version>
</dependency>

示例

線上演示

import org.apache.commons.lang3.time.StopWatch;
public class Example {
   public void test(){
      int num = 0;
      for(int i=0; i<=50; i++){  
         num =num+i;
         System.out.print(num+", ");
      }  
   }
   public static void main(String args[]) {  
      //Instantiating the StopWatch class
      StopWatch obj = new StopWatch();
      //Starting the watch
      obj.start();
      new Example().test();
      //Stopping the watch
      obj.stop();
      System.out.println();
      System.out.println("Elapsed Time: "+obj.getTime() +" milli seconds");
   }
}

輸出

0, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91, 105, 120, 136, 153, 171, 190, 210, 231, 253, 276, 300, 325, 351, 378, 406, 435, 465, 496, 528, 561, 595, 630, 666, 703, 741, 780, 820, 861, 903, 946, 990, 1035, 1081, 1128, 1176, 1225, 1275,
Elapsed Time: 1 milli seconds

更新於:2021年2月6日

4K+ 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始學習
廣告