JAVA获取时间戳,哪个更快
2016-07-20 14:30
393 查看
目前获取毫秒值大概有下面三种方法
Java代码
//方法 一
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();
}
}
}
因为很简单我就不加注释了,每种方法都运行1千万次,然后查看运行结果
Java代码
187
7032
297
结果发现 System.currentTimeMillis() 这种方式速度最快
Calendar.getInstance().getTimeInMillis() 这种方式速度最慢,看看源码会发现,Canlendar因为要处理时区问题会耗费很多的时间。
所以建议多使用第一种方式。
另,System 类中有很多高效的方法,比如,arrayCopy 之类的
Java代码
//方法 一
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();
}
}
}
因为很简单我就不加注释了,每种方法都运行1千万次,然后查看运行结果
Java代码
187
7032
297
结果发现 System.currentTimeMillis() 这种方式速度最快
Calendar.getInstance().getTimeInMillis() 这种方式速度最慢,看看源码会发现,Canlendar因为要处理时区问题会耗费很多的时间。
所以建议多使用第一种方式。
另,System 类中有很多高效的方法,比如,arrayCopy 之类的
相关文章推荐
- jmap,jhat分析内存
- MiniDao_1.6-SNAPSHOT 版本发布,轻量级Java持久化框架
- Java Calendar 类的时间操作
- 各种排序算法的分析及java实现
- 找不到javax.servlet包
- Android Studio与eclipse的区别
- spring 3.2 后 annotation-driven 注册新的类
- 快速搭建ibatis+tddl+spring工程构造数据
- SpringMVC Controller介绍及常用注解
- Spring数据源支持之Mybatis
- Java对象的序列化和反序列化
- 【spring】spring reference doc 4.3.1 研读<三> Spring aop
- spring笔记——bean的生命周期
- Android Studio与eclipse常用快捷键对比
- 【奔跑的菜鸟】Java中的关键字static和final以及静态语句块
- Java 多线程状态转换
- JAVA ResourceBundle 加载外部路径资源文件方式
- eclipse在线安装maven插件报错
- 如何获取当前线程中的方法名称
- Spring3.0中的AOP配置方法