java获取时间戳的几种方法及最优方法

2017-09-04  本文已影响0人  java大湿兄

目前获取毫秒值大概有下面三种方法

Java代码

  • //方法 一

  • System.currentTimeMillis();

  • //方法 二

  • Calendar.getInstance().getTimeInMillis();

  • //方法 三

  • new

  • Date().getTime();

    //方法 一

    System.currentTimeMillis();

    //方法 二

    Calendar.getInstance().getTimeInMillis();

    //方法 三

    new Date().getTime();

    最近做监控系统,发现代码中有前两种方法,然后突然有了一个想法,到底哪个更快呢?

    然后做了如下实验:

    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千万次,然后查看运行结果

    Java代码

  • 187

  • 7032

  • 297

  • 187

    7032

    297

    结果发现 System.currentTimeMillis() 这种方式速度最快

    Calendar.getInstance().getTimeInMillis() 这种方式速度最慢,看看源码会发现,Canlendar因为要处理时区问题会耗费很多的时间。

    所以建议多使用第一种方式。

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

    学习Java的同学注意了!!!
    学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群346942462,我们一起学Java!

    上一篇下一篇

    猜你喜欢

    热点阅读