`
tmj_159
  • 浏览: 701053 次
  • 性别: Icon_minigender_1
  • 来自: 永州
社区版块
存档分类
最新评论

JAVA获取时间戳,哪个更快

阅读更多

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

 

//方法 一
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 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千万次,然后查看运行结果

187
7032
297

 

结果发现 System.currentTimeMillis() 这种方式速度最快

Calendar.getInstance().getTimeInMillis() 这种方式速度最慢,看看源码会发现,Canlendar因为要处理时区问题会耗费很多的时间。

所以建议多使用第一种方式。

 

另,System 类中有很多高效的方法,比如,arrayCopy 之类的

 

分享到:
评论
4 楼 wangyonglin1123 2016-12-23  
/**
* @return 获取时间戳
*/
public static java.sql.Timestamp getNowTimeStamp()
{
return new java.sql.Timestamp(System.currentTimeMillis());
}


jar包里的源代码
public Timestamp(long time) {
        super((time/1000)*1000);
        nanos = (int)((time%1000) * 1000000);
        if (nanos < 0) {
            nanos = 1000000000 + nanos;
            super.setTime(((time/1000)-1)*1000);
        }
    }
3 楼 u010311110 2016-11-14  
文章标题有误,容易误导新手。你获取的不是时间戳
2 楼 operating...mydream 2015-09-06  
1 楼 zwnJava 2013-02-20  
不错,以前没注意过。

相关推荐

Global site tag (gtag.js) - Google Analytics