簡體   English   中英

System.currentTimeMillis()和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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM