Computer >> Máy Tính >  >> Lập trình >> Java

Làm cách nào để đo thời gian đã trôi qua trong Java?

Nói chung, thời gian trôi qua là thời gian từ điểm bắt đầu đến điểm kết thúc của một sự kiện. Sau đây là nhiều cách khác nhau để tìm thời gian đã trôi qua trong Java -

Sử dụng phương thức currentTimeMillis ()

Phương thức currentTimeMillis () trả về thời gian hiện tại tính bằng mili giây. Để tìm thời gian đã trôi qua cho một phương thức, bạn có thể nhận được sự khác biệt giữa các giá trị thời gian trước và sau khi thực thi phương thức mong muốn.

Ví dụ

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");
   }
}

Đầu ra

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

Sử dụng phương thức nanoTime ()

Phương thức nanoTime () trả về thời gian hiện tại tính bằng nano giây. Để tìm thời gian đã trôi qua cho một phương thức, bạn có thể nhận được sự khác biệt giữa các giá trị thời gian trước và sau khi thực thi phương thức mong muốn.

Ví dụ

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);
   }
}

Đầu ra

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

Sử dụng lớp Instant

Phương thức now () của lớp Instant trả về thời gian hiện tại và các phương thức Duration.between () trả về sự khác biệt giữa hai giá trị thời gian đã cho để thời gian trôi qua truy xuất các giá trị thời gian trước và sau khi thực hiện phương thức mong muốn và truy xuất khoảng thời gian sử dụng phương thức Duration.between ().

Ví dụ

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");

   }
}

Đầu ra

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

Sử dụng lớp StopWatch

Thư viện commons của Apache cung cấp một lớp được gọi là Đồng hồ bấm giờ để nó cung cấp các phương thức start () stop () và getTime () để tìm thời gian thực thi một phương thức.

Sau đây là tệp maven của gói này -

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

Ví dụ

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");
   }
}

Đầu ra

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