[英]What is faster? System.currentTimeMillis() or Date().getTime()?
[英]Difference between System.currentTimeMillis() and Date getTime()?
我希望通過對返回時間戳的函數的多次調用來獲得微小的性能提升。 該函數如下所示:
public static long get_now_ms(){
// returns number of MILLISECONDS since epoch
java.util.Date d = new java.util.Date();
return d.getTime();
}
我可以用以下內容替換它:
public static long get_now_ms(){
// returns number of MILLISECONDS since epoch
return System.currentTimeMillis();
}
我知道Date內部使用System.currentTimeMillis()。 我的問題是,夏令時或時區是否會導致這兩種方法的結果出現差異。 我想這可能會出現Calendar對象,但不是Date對象,但是會對此有所了解。
我知道我可能不會在實際應用程序中看到明顯的性能差異,但仍然想知道答案。
謝謝!
沒有區別,除了分配Date對象造成的非常輕微的延遲。
從javadoc開始 , Date
的默認構造函數:
分配一個Date對象並對其進行初始化,使其表示分配時間,測量精確到毫秒。
Date
只是一個Date
毫秒的薄包裝器,沒有任何時區概念。 只有在渲染到String時才會考慮時區,但這是由Locale
類處理的。
我建議進行單元測試(例如https://gist.github.com/ledlogic/8532028 )。 我看到運行System.currentTimeMillis與(new Date())。getTime()只有一點點整體好處。
1 billion runs: (1000 outer loops, 1,000,000 inner loops):
System.currentTimeMillis(): 14.353 seconds
(new Date()).getTime(): 16.668 seconds
個別運行有時會稍微偏向后一種方法 - 取決於您的系統活動。
沒有區別,Calendar.getTimeInMillis()也是一樣的。 因為返回結果是自1970年1月1日00:00:00 GMT以來的毫秒數。 無論你是誰,你都將獲得相同的長期價值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.