Nói chung, thời gian trôi qua (elapsed time) hoặc thời gian thực thi (execution 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 khác nhau để 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. Để tìm thời gian trôi qua cho một phương pháp, bạn có thể lấy hiệu giữa các giá trị thời gian trước và sau khi thực thi phương pháp mong muốn. - Phương thức
nanoTime()trả về thời gian hiện tại tính bằng nano-giây. Tương tự, lấy hiệu giữa các giá trị trước và sau khi thực thi. - Phương thức
now()của lớpInstanttrả về thời gian hiện tại và phương thứcDuration.between()trả về hiệu giữa hai giá trị thời gian cho trước. - Thư viện Apache Commons cung cấp lớp
StopWatchvới các phương thứcstart(),stop()vàgetTime(). - Phương thức
getTime()của lớpjava.util.Datetrả về thời gian hiện tại. - Bạn cũng có thể lấy thời gian trong instance hiện tại bằng
getInstance().getTime().getTime().
Ví dụ: Sử dụng 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[]) {
long begin = System.currentTimeMillis();
new Example().test();
long end = System.currentTimeMillis();
long time = end - begin;
System.out.println();
System.out.println("Thời gian trôi qua: " + time + " mili-giây");
}
}
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: 4 mili-giây
Ví dụ: Sử dụng 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[]) {
long begin = System.nanoTime();
new Example().test();
long end = System.nanoTime();
long time = end - begin;
System.out.println();
System.out.println("Thời gian trôi qua: " + time + " nano-giây");
}
}
Kết quả
... (tương tự) Thời gian trôi qua: 1530200 nano-giây
Ví dụ: Sử dụng lớp Instant (Java 8+)
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[]) {
Instant start = Instant.now();
new Example().test();
Instant end = Instant.now();
long time = Duration.between(start, end).toMillis();
System.out.println();
System.out.println(time + " Mili-giây");
}
}
Kết quả
... (tương tự) 3 Mili-giây
Ví dụ: Sử dụng StopWatch (Apache Commons Lang)
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[]) {
StopWatch obj = new StopWatch();
obj.start();
new Example().test();
obj.stop();
System.out.println();
System.out.println("Thời gian trôi qua: " + obj.getTime() + " mili-giây");
}
}
Kết quả
... (tương tự) Thời gian trôi qua: 1 mili-giây
Ví dụ: Sử dụng Date.getTime()
import java.util.Date;
public class Demo {
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) {
long startTime = new Date().getTime();
new Demo().test();
long endTime = new Date().getTime();
long time = endTime - startTime;
System.out.println("Thời gian thực thi: " + time);
}
}
Kết quả
... (tương tự) Thời gian thực thi: 5
Ví dụ: Sử dụng Calendar
import java.util.Calendar;
public class Demo {
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) throws InterruptedException {
long startTime = Calendar.getInstance().getTime().getTime();
new Demo().test();
long endTime = Calendar.getInstance().getTime().getTime();
long time = endTime - startTime;
System.out.println("Thời gian thực thi: " + time);
}
}
Kết quả
... (tương tự) Thời gian thực thi: 20