java获取时间戳的方法性能对比

1,639 阅读1分钟

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

//方法 一   System.currentTimeMillis(); 

//方法 二   Calendar.getInstance().getTimeInMillis();  

//方法 三   new Date().getTime();

代码测试如下:

public class TimeTest {

    private static int LOOP_NUM = 1000000;
    public static void main(String[] args) {
        long t1 = System.currentTimeMillis();
        testSystem(LOOP_NUM);
        long t2 = System.currentTimeMillis();
        System.out.println("testSystem:" + (t2 - t1));

        t1 = System.currentTimeMillis();
        testCalender(LOOP_NUM);
        t2 = System.currentTimeMillis();
        System.out.println("testCalender:" + (t2 - t1));

        t1 = System.currentTimeMillis();
        testDate(LOOP_NUM);
        t2 = System.currentTimeMillis();
        System.out.println("testDate:" + (t2 - t1));

    }

    // test System.currentTimeMillis()
    private static void testSystem(int loopNum) {
        for (int i=0;i<loopNum;i++) {
            long currentSystemTime = System.currentTimeMillis();
        }
    }

    // test Calendar.getInstance().getTimeInMillis()
    private static void testCalender(int loopNum) {
        for (int i=0;i<loopNum;i++) {
            long currentTime = Calendar.getInstance().getTimeInMillis();
        }
    }

    private static void testDate(int loopNum) {
        for (int i=0;i<loopNum;i++) {
            long currentTime = new Date().getTime();
        }
    }
}

输出结果:

testSystem:42
testCalender:417
testDate:36

由此可见

  • new Date().getTime()的性能最高,有些设备可能System.currentTimeMillis()最高
  • System.currentTimeMillis()性能仅次于new Date().getTime()。
  • Calendar.getInstance().getTimeInMillis()性能最低。

如果关注性能相关的问题,使用时间戳时,要尽量减少Calendar.getInstance().getTimeInMillis()的使用。