转载:JAVA获取时间戳,哪个更快

转载:http://hi.baidu.com/suofang/item/96629a060a44c119eafe38cc


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

 
Java代码  
//方法 一   
System.currentTimeMillis();    
//方法 二   
Calendar.getInstance().getTimeInMillis();   
//方法 三   
new Date().getTime(); 
//方法 一
System.currentTimeMillis(); 
//方法 二
Calendar.getInstance().getTimeInMillis();
//方法 三
new Date().getTime(); 最近做监控系统,发现代码中有前两种方法,然后突然有了一个想法,到底哪个更快呢?
然后做了如下实验:
 

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();   
        }   
           
    }   
} 
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 之类的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值