Difference between System.currentTimeMillis() and Date getTime()?

前端 未结 3 2119
故里飘歌
故里飘歌 2021-02-14 03:08

I was hoping to squeeze a tiny performance gain out of many calls to a function that returns a timestamp. The function looks like this:

public static long get_n         


        
相关标签:
3条回答
  • 2021-02-14 03:48

    No difference, and Calendar.getTimeInMillis() is also same. because the return results is the number of milliseconds since January 1, 1970, 00:00:00 GMT. you will get a same long value whereever you are all over the word.

    0 讨论(0)
  • 2021-02-14 03:54

    No difference, except for the very slight lag caused by allocating a Date object.

    From the javadoc the the default constructor of Date:

    Allocates a Date object and initializes it so that it represents the time at which it was allocated, measured to the nearest millisecond.

    A Date is just a thin wrapper around the epoch milliseconds, without any concept of timezones. Only when rendered to a String is timezone considered, but that is handled by the Locale class.

    0 讨论(0)
  • 2021-02-14 04:03

    I would suggest running a unit test (ex. https://gist.github.com/ledlogic/8532028). I saw only a slight overall benefit to running the System.currentTimeMillis versus the (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
    

    Individual runs would sometimes be slightly biased toward the later approach - depending on your system activity.

    0 讨论(0)
提交回复
热议问题