欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JAVA获取时间戳,哪个更快 博客分类: java 基础 JAVA时间戳 

程序员文章站 2024-03-16 19:54:22
...

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

 

//方法 一
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 之类的

 

相关标签: JAVA 时间戳