System.nanoTime (計時工具類)
阿新 • • 發佈:2019-01-24
JDK1.5之後java中的計時給出了更精確的方法:System.nanoTime(),輸出的精度是納秒級別,這個給一些效能測試提供了更準確的參考。
但是這個方法有個需要注意的地方,不能用來計算今天是哪一天(應該也沒人這麼傻,只是早上我突然想起)
看到這個方法不由得會想起System.currentTime(),這個方法,它的精度是毫秒,返回值是從1970.1.1的零點開始到當前時間的毫秒數,理論上這個可以用來算當前的時間,而且可以用這個值來構造一個Date物件。但是System.nanoTime()卻是不同,程式碼註釋上有這麼一句: The value returned represents nanoseconds since some fixed but arbitrary time (perhaps in the future, so values may be negative).
這個返回值是一個從確定的值算起的,但是這個值是任意的,可能是一個未來的時間,所以返回值有可能是負數。(我的英語很蹩腳,意思應該能明白吧)
所以說這個System.nanoTime()方法只能用來計時,例如:
long s = System.nanoTime();
....
但是這個方法有個需要注意的地方,不能用來計算今天是哪一天(應該也沒人這麼傻,只是早上我突然想起)
看到這個方法不由得會想起System.currentTime(),這個方法,它的精度是毫秒,返回值是從1970.1.1的零點開始到當前時間的毫秒數,理論上這個可以用來算當前的時間,而且可以用這個值來構造一個Date物件。但是System.nanoTime()卻是不同,程式碼註釋上有這麼一句: The value returned represents nanoseconds since some fixed but arbitrary time (perhaps in the future, so values may be negative).
這個返回值是一個從確定的值算起的,但是這個值是任意的,可能是一個未來的時間,所以返回值有可能是負數。(我的英語很蹩腳,意思應該能明白吧)
所以說這個System.nanoTime()方法只能用來計時,例如:
long s = System.nanoTime();
....
System.out.println(System.nanoTime() - s);