1. 程式人生 > >currentTimeMillis,getTimeInMillis與getTime獲取當前時間戳耗時比較

currentTimeMillis,getTimeInMillis與getTime獲取當前時間戳耗時比較

在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.