java獲取時間戳的幾種方法及最優(yōu)方法

目前獲取毫秒值大概有下面三種方法

Java代碼

  • //方法 一

  • System.currentTimeMillis();

  • //方法 二

  • Calendar.getInstance().getTimeInMillis();

  • //方法 三

  • new

  • Date().getTime();

    //方法 一

    System.currentTimeMillis();

    //方法 二

    Calendar.getInstance().getTimeInMillis();

    //方法 三

    new Date().getTime();

    最近做監(jiān)控系統(tǒng),發(fā)現(xiàn)代碼中有前兩種方法,然后突然有了一個想法,到底哪個更快呢?

    然后做了如下實驗:

    Java代碼

  • import java.util.Calendar;

  • import java.util.Date;

  • public class TimeTest {

  • private static long_TEN_THOUSAND=10000;

  • public static void main(String[] args) {

  • long times=1000*_TEN_THOUSAND;

  • long t1=System.currentTimeMillis();

  • testSystem(times);

  • long t2=System.currentTimeMillis();

  • System.out.println(t2-t1);

  • testCalander(times);

  • long t3=System.currentTimeMillis();

  • System.out.println(t3-t2);

  • testDate(times);

  • long t4=System.currentTimeMillis();

  • System.out.println(t4-t3);

  • }

  • public static void testSystem(long times){

  • //use 188

    for(int i=0;i

    long currentTime=System.currentTimeMillis();

  • }

  • }

  • public static void

  • testCalander(long times){

    //use 6299

    for(int i=0;i

    long currentTime=Calendar.getInstance().getTimeInMillis();

    }

  • }

  • public static void testDate(long times){

    for(int i=0;i

    long currentTime=new Date().getTime();

  • }

  • }

  • }

  • import java.util.Calendar;

    import java.util.Date;

    public class TimeTest {

    private static long _TEN_THOUSAND=10000;

    public static void main(String[] args) {

    long times=1000*_TEN_THOUSAND;

    long t1=System.currentTimeMillis();

    testSystem(times);

    long t2=System.currentTimeMillis();

    System.out.println(t2-t1);

    testCalander(times);

    long t3=System.currentTimeMillis();

    System.out.println(t3-t2);

    testDate(times);

    long t4=System.currentTimeMillis();

    System.out.println(t4-t3);

    }

    public static void testSystem(long times){//use 188

    for(int i=0;i

    因為很簡單我就不加注釋了,每種方法都運行1千萬次,然后查看運行結(jié)果

    Java代碼

  • 187

  • 7032

  • 297

  • 187

    7032

    297

    結(jié)果發(fā)現(xiàn) System.currentTimeMillis() 這種方式速度最快

    Calendar.getInstance().getTimeInMillis() 這種方式速度最慢,看看源碼會發(fā)現(xiàn),Canlendar因為要處理時區(qū)問題會耗費很多的時間。

    所以建議多使用第一種方式。

    另,System 類中有很多高效的方法,比如,arrayCopy 之類的

    學習Java的同學注意了!?。?br>學習過程中遇到什么問題或者想獲取學習資源的話,歡迎加入Java學習交流群346942462,我們一起學Java!

    最后編輯于
    ?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
    【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
    平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

    相關閱讀更多精彩內(nèi)容

    友情鏈接更多精彩內(nèi)容