java獲取時間戳的方式 和幾種方式速度對比
阿新 • • 發佈:2019-01-11
最近做監控系統,發現程式碼中有前兩種方法,然後突然有了一個想法,到底哪個更快呢?
然後做了如下實驗:
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<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
結果發現 System.currentTimeMillis() 這種方式速度最快
Calendar.getInstance().getTimeInMillis() 這種方式速度最慢,看看原始碼會發現,Canlendar因為要處理時區問題會耗費很多的時間。
所以建議多使用第一種方式。
另,System 類中有很多高效的方法,比如,arrayCopy 之類的
http://tangmingjie2009.iteye.com/blog/1543166