tôi có một thú vị "thời gian đi lại" vấn đề ngày hôm nay, bằng cách sử dụng đoạn mã sau:Thời gian theo dõi trong Java: sử dụng currentTimeMills()
for (int i = 0; i < 1; i++){
long start = System.currentTimeMillis();
// Some code here
System.out.print(i + "\t" + (System.currentTimeMillis() - start));
start = System.currentTimeMillis();
// Some code here
System.out.println("\t" + (System.currentTimeMillis() - start));
}
Và tôi đã có kết quả
0 15 -606
Và nó có vẻ như nó không lặp lại được. Bất cứ ai cũng có bất kỳ manh mối nào về những gì đã xảy ra bên trong trong thời gian chạy? Chỉ cần tò mò ...
Chỉnh sửa mới: Tôi đã sử dụng một thử nghiệm nhỏ để xác nhận câu trả lời bên dưới. Tôi chạy chương trình và thay đổi thời gian hệ thống trong khi chạy, và cuối cùng lặp lại "thời gian du lịch":
0 -3563323 163
Trường hợp đóng. Cảm ơn các bạn!
Từ khác: cả currentTimeMillis() và nanoTime() đều dựa trên hệ thống, vì vậy chúng sẽ không đơn điệu nếu bộ đếm thời gian hệ thống được cập nhật (quay lại, cụ thể). Nó là tốt hơn để sử dụng một số bộ đếm thời gian dựa trên internet cho các trường hợp như vậy.
Không chắc chắn 'currentTimeMillis' là đơn điệu. Bạn có thể có kết quả tốt hơn wit 'System.nanoTime()' được thiết kế đặc biệt để đo khoảng thời gian. – Rom1
@ asksw0rder: bạn có thể chạy cùng một chương trình một lần nữa và cập nhật đầu ra thứ hai là gì không? –
@ asksw0rder Biến i là gì? giá trị của nó là gì? Làm cho không có ý nghĩa để có được 0 trong đầu ra đầu tiên. – sfrj