JAVA獲取時間戳,哪個更快
阿新 • • 發佈:2019-02-17
目前獲取毫秒值大概有下面三種方法
Java程式碼- //方法 一
- System.currentTimeMillis();
- //方法 二
- Calendar.getInstance().getTimeInMillis();
- //方法 三
- new Date().getTime();
//方法 一
System.currentTimeMillis();
//方法 二
Calendar.getInstance().getTimeInMillis();
//方法 三
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
- 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
- for(int i=0;i<times;i++){
- long currentTime=System.currentTimeMillis();
- }
- }
- public static void testCalander(long times){//use 6299
- for(int i=0;i<times;i++){
- long currentTime=Calendar.getInstance().getTimeInMillis();
- }
- }
- public static void testDate(long times){
- for(int i=0;i<times;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<times;i++){
long currentTime=System.currentTimeMillis();
}
}
public static void testCalander(long times){//use 6299
for(int i=0;i<times;i++){
long currentTime=Calendar.getInstance().getTimeInMillis();
}
}
public static void testDate(long times){
for(int i=0;i<times;i++){
long currentTime=new Date().getTime();
}
}
}
因為很簡單我就不加註釋了,每種方法都執行1千萬次,然後檢視執行結果
Java程式碼- 187
- 7032
- 297
187
7032
297
結果發現 System.currentTimeMillis() 這種方式速度最快
Calendar.getInstance().getTimeInMillis() 這種方式速度最慢,看看原始碼會發現,Canlendar因為要處理時區問題會耗費很多的時間。
所以建議多使用第一種方式。
另,System 類中有很多高效的方法,比如,arrayCopy 之類的