currentTimeMillis,getTimeInMillis與getTime獲取當前時間戳耗時比較
阿新 • • 發佈:2018-12-26
在java中,生成當前的時間戳大致上有這麼幾種方法,分別是:
一、System.currentTimeMillis(),它屬於java.lang.System;
二、Calendar.getInstance().getTimeInMillis(),它屬於java.util.Calendar;
三、new Date().getTime(),它屬於java.util.Date;
下面是這三種方法各自執行100000所消耗的時間.
執行結果:package net.sahv.yrsy.test2; import java.util.Calendar; import java.util.Date; public class testTime { public static void main(String[] args) { //方法一 long startMillis=System.currentTimeMillis(); for(int i=0;i<100000;i++){ System.currentTimeMillis(); } long endMillis=System.currentTimeMillis(); long spendMillis=endMillis-startMillis; System.out.println("currentTimeMillis方法所消耗的時間:"+spendMillis); //方法二 long startTimeInMillis=Calendar.getInstance().getTimeInMillis(); for(int i=0;i<100000;i++){ Calendar.getInstance().getTimeInMillis(); } long endTimeInMillis=Calendar.getInstance().getTimeInMillis(); long spendTimeInMillis=endTimeInMillis-startTimeInMillis; System.out.println("Calendar中的getTime()方法所消耗的時間:"+spendTimeInMillis); //方法三 long startGetTime=new Date().getTime(); for(int i=0;i<100000;i++){ new Date().getTime(); } long endGetTime=new Date().getTime(); long spendGetTime=endGetTime-startGetTime; System.out.println("Date中的getTime方法所消耗的時間:"+spendGetTime); } }
currentTimeMillis方法所消耗的時間:2
Calendar中的getTime()方法所消耗的時間:108
Date中的getTime方法所消耗的時間:6
通過上述比較,以執行100000為例,執行速度上currentTimeMillis>getTime>getTimeInMillis.
所以說在生成當前時間戳上,我建議大家採用currentTimeMillis方法,因為該方法執行速度最快.而getTime方法次之,通過檢視原始碼,new Date的原始碼中是這樣寫的:
public Date() { this(System.currentTimeMillis()); }
也就是說new Date 方法其實也是呼叫的currentTimeMillis,但由於其又呼叫了getTime方法,所以說在時間的消耗上比currentTimeMillis要長一點是很容易理解的,畢竟走了一個將date型資料到long型的資料轉換.而getTimeInMillis方法在執行前總是先裝載Calendar,也就是說執行Calendar.getInstance()方法,在裝載的過程中消耗了大量的時間,因而消耗的時間最長,所以說在生成當前的時間戳的方法上不建議採用getTimeInMillis.