System.currentTimeMillis,getTimeInMillis与new Date().getTime获取当前时间戳耗时比较
2017-07-10 10:56
429 查看
在Java中,生成当前的时间戳大致上有这么几种方法,分别是:
一、System.currentTimeMillis(),它属于java.lang.System;
二、Calendar.getInstance().getTimeInMillis(),它属于java.util.Calendar;
三、new Date().getTime(),它属于java.util.Date;
下面是这三种方法各自运行100000所消耗的时间
代码如下:
package com.iflytek.timeStamp;
import java.util.Calendar;
import java.util.Date;
public class Timer {
public static void main(String[] args) {
//方法一
long startTime = System.currentTimeMillis();
for(int i = 0 ; i < 100000; i++){
System.currentTimeMillis();
}
long endTime = System.currentTimeMillis();
long speedTime = endTime - startTime;
System.out.println("currentTimeMillis方法所消耗的时间:"+speedTime);
//方法二
long startTime2 = Calendar.getInstance().getTimeInMillis();
for(int i = 0; i < 100000; i++){
Calendar.getInstance().getTimeInMillis();
}
long endTime2 = Calendar.getInstance().getTimeInMillis();
long speedTime2 = endTime2 - startTime2;
System.out.println("Calendar中的getTime()方法所消耗的时间:"+speedTime2);
//方法三
long startTime3 = new Date().getTime();
for(int i = 0; i < 100000; i++){
new Date().getTime();
}
long endTime3 = new Date().getTime();
long speedTime3 = endTime3 - startTime3;
System.out.println("Date中的getTime方法所消耗的时间:"+speedTime3);
}
}
运行结果如下:
currentTimeMillis方法所消耗的时间:1
Calendar中的getTime()方法所消耗的时间:58
Date中的getTime方法所消耗的时间:9
通过这些比较我们可以看出:运行速度上System.currentTimeMillis>new Date().getTime>getTimeInMillis.
这样看,应该还是使用currentTimeMillis方法,速度更快一些,.而getTime方法次之,通过查看源代码,new Date的源码中是这样写的:
[java] view
plain copy
public Date() {
this(System.currentTimeMillis());
}
也就是说new Date 方法其实也是调用的currentTimeMillis,但由于其又调用了getTime方法,所以说在时间的消耗上比currentTimeMillis要长一点是很容易理解的,是有一个将date型数据到long型的数据转换.而getTimeInMillis方法在执行前总是先装载Calendar,也就是执行Calendar.getInstance()方法,在装载的过程中消耗了大量的时间,因而消耗的时间最长,所以说在生成当前的时间戳的方法上不建议采用getTimeInMillis.
一、System.currentTimeMillis(),它属于java.lang.System;
二、Calendar.getInstance().getTimeInMillis(),它属于java.util.Calendar;
三、new Date().getTime(),它属于java.util.Date;
下面是这三种方法各自运行100000所消耗的时间
代码如下:
package com.iflytek.timeStamp;
import java.util.Calendar;
import java.util.Date;
public class Timer {
public static void main(String[] args) {
//方法一
long startTime = System.currentTimeMillis();
for(int i = 0 ; i < 100000; i++){
System.currentTimeMillis();
}
long endTime = System.currentTimeMillis();
long speedTime = endTime - startTime;
System.out.println("currentTimeMillis方法所消耗的时间:"+speedTime);
//方法二
long startTime2 = Calendar.getInstance().getTimeInMillis();
for(int i = 0; i < 100000; i++){
Calendar.getInstance().getTimeInMillis();
}
long endTime2 = Calendar.getInstance().getTimeInMillis();
long speedTime2 = endTime2 - startTime2;
System.out.println("Calendar中的getTime()方法所消耗的时间:"+speedTime2);
//方法三
long startTime3 = new Date().getTime();
for(int i = 0; i < 100000; i++){
new Date().getTime();
}
long endTime3 = new Date().getTime();
long speedTime3 = endTime3 - startTime3;
System.out.println("Date中的getTime方法所消耗的时间:"+speedTime3);
}
}
运行结果如下:
currentTimeMillis方法所消耗的时间:1
Calendar中的getTime()方法所消耗的时间:58
Date中的getTime方法所消耗的时间:9
通过这些比较我们可以看出:运行速度上System.currentTimeMillis>new Date().getTime>getTimeInMillis.
这样看,应该还是使用currentTimeMillis方法,速度更快一些,.而getTime方法次之,通过查看源代码,new Date的源码中是这样写的:
[java] view
plain copy
public Date() {
this(System.currentTimeMillis());
}
也就是说new Date 方法其实也是调用的currentTimeMillis,但由于其又调用了getTime方法,所以说在时间的消耗上比currentTimeMillis要长一点是很容易理解的,是有一个将date型数据到long型的数据转换.而getTimeInMillis方法在执行前总是先装载Calendar,也就是执行Calendar.getInstance()方法,在装载的过程中消耗了大量的时间,因而消耗的时间最长,所以说在生成当前的时间戳的方法上不建议采用getTimeInMillis.
相关文章推荐
- System.currentTimeMillis,getTimeInMillis与new Date().getTime获取当前时间戳耗时比较
- System.currentTimeMillis,getTimeInMillis与new Date().getTime获取当前时间戳耗时比较
- System.currentTimeMillis,getTimeInMillis与new Date().getTime获取当前时间戳耗时比较
- System.currentTimeMillis,getTimeInMillis与new Date().getTime获取当前时间戳耗时比较
- System.currentTimeMillis,getTimeInMillis与new Date().getTime获取当前时间戳耗时比较
- System.currentTimeMillis,getTimeInMillis与new Date().getTime获取当前时间戳耗时比较
- System.currentTimeMillis,getTimeInMillis与new Date().getTime获取当前时间戳耗时比较
- System.currentTimeMillis,getTimeInMillis与new Date().getTime获取当前时间戳耗时比较
- System.currentTimeMillis,getTimeInMillis与new Date().getTime获取当前时间戳耗时比较
- System.currentTimeMillis,getTimeInMillis与new Date().getTime获取当前时间戳耗时比较
- System.currentTimeMillis,getTimeInMillis与new Date().getTime获取当前时间戳耗时比较
- System.currentTimeMillis,getTimeInMillis与new Date().getTime获取当前时间戳耗时比较
- System.currentTimeMillis,getTimeInMillis与new Date().getTime获取当前时间戳耗时比较
- System.currentTimeMillis,getTimeInMillis与new Date().getTime获取当前时间戳耗时比较
- System.currentTimeMillis,getTimeInMillis与new Date().getTime获取当前时间戳耗时比较
- System.currentTimeMillis,getTimeInMillis与new Date().getTime获取当前时间戳耗时比较
- System.currentTimeMillis,getTimeInMillis与new Date().getTime获取当前时间戳耗时比较
- System.currentTimeMillis,getTimeInMillis与new Date().getTime获取当前时间戳耗时比较
- System.currentTimeMillis,getTimeInMillis与new Date().getTime获取当前时间戳耗时比较
- System.currentTimeMillis,getTimeInMillis与new Date().getTime获取当前时间戳耗时比较