Nói chung, thời gian trôi qua (elapsed time) là thời gian từ điểm bắt đầu đến điểm kết thúc của một sự kiện. Dưới đây là các cách để tìm thời gian trôi qua trong Java:
- Phương thức
currentTimeMillis()trả về thời gian hiện tại tính bằng mili-giây. - Phương thức
nanoTime()trả về thời gian hiện tại tính bằng nano-giây. - Phương thức
now()của lớpInstanttrả về thời gian hiện tại vàDuration.between()trả về hiệu giữa hai giá trị thời gian. - Thư viện Apache Commons cung cấp lớp
StopWatchvới các phương thứcstart(),stop()vàgetTime().
Ví dụ: So sánh các phương pháp đo thời gian
Ví dụ sau minh họa cách tìm thời gian thực thi của một phương thức bằng các phương pháp đã nêu:
import java.time.Duration;
import java.time.Instant;
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[]) {
Example obj = new Example();
// 1. nanoTime()
long start1 = System.nanoTime();
obj.test();
long end1 = System.nanoTime();
System.out.println("Thời gian trôi qua (nano-giây): " + (end1 - start1));
// 2. currentTimeMillis()
long start2 = System.currentTimeMillis();
obj.test();
long end2 = System.currentTimeMillis();
System.out.println("Thời gian trôi qua (mili-giây): " + (end2 - start2));
// 3. Instant + Duration
Instant inst1 = Instant.now();
obj.test();
Instant inst2 = Instant.now();
System.out.println("Thời gian trôi qua: " + Duration.between(inst1, inst2).toString());
// 4. StopWatch
StopWatch stopWatch = new StopWatch();
stopWatch.start();
obj.test();
stopWatch.stop();
System.out.println("Thời gian trôi qua (phút): " + stopWatch.getTime());
}
}
Kết quả
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, Thời gian trôi qua (nano-giây): 1882300 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, Thời gian trôi qua (mili-giây): 1 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, Thời gian trôi qua: PT0.001S 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, Thời gian trôi qua (phút): 1