currentTimeMillis,getTimeInMillis与getTime获取当前时间戳耗时比较

来源:互联网 发布:php aes解密后有乱码 编辑:程序博客网 时间:2024/05/18 23:26

在java中,生成当前的时间戳大致上有这么几种方法,分别是:

一、System.currentTimeMillis(),它属于java.lang.System;

二、Calendar.getInstance().getTimeInMillis(),它属于java.util.Calendar;

三、new Date().getTime(),它属于java.util.Date;

下面是这三种方法各自运行100000所消耗的时间.

package net.sahv.yrsy.test2;import java.util.Calendar;import java.util.Date;public class testTime {public static void main(String[] args) {//方法一long startMillis=System.currentTimeMillis();for(int i=0;i<100000;i++){System.currentTimeMillis();}long endMillis=System.currentTimeMillis();long spendMillis=endMillis-startMillis;System.out.println("currentTimeMillis方法所消耗的时间:"+spendMillis);//方法二long startTimeInMillis=Calendar.getInstance().getTimeInMillis();for(int i=0;i<100000;i++){Calendar.getInstance().getTimeInMillis();}long endTimeInMillis=Calendar.getInstance().getTimeInMillis();long spendTimeInMillis=endTimeInMillis-startTimeInMillis;System.out.println("Calendar中的getTime()方法所消耗的时间:"+spendTimeInMillis);//方法三long startGetTime=new Date().getTime();for(int i=0;i<100000;i++){new Date().getTime();}long endGetTime=new Date().getTime();long spendGetTime=endGetTime-startGetTime;System.out.println("Date中的getTime方法所消耗的时间:"+spendGetTime);}}


运行结果:

currentTimeMillis方法所消耗的时间:2Calendar中的getTime()方法所消耗的时间:108Date中的getTime方法所消耗的时间:6

通过上述比较,以运行100000为例,运行速度上currentTimeMillis>getTime>getTimeInMillis.

所以说在生成当前时间戳上,我建议大家采用currentTimeMillis方法,因为该方法运行速度最快.而getTime方法次之,通过查看源代码,new Date的源码中是这样写的:

public Date() {        this(System.currentTimeMillis());    }

也就是说new Date 方法其实也是调用的currentTimeMillis,但由于其又调用了getTime方法,所以说在时间的消耗上比currentTimeMillis要长一点是很容易理解的,毕竟走了一个将date型数据到long型的数据转换.而getTimeInMillis方法在执行前总是先装载Calendar,也就是说执行Calendar.getInstance()方法,在装载的过程中消耗了大量的时间,因而消耗的时间最长,所以说在生成当前的时间戳的方法上不建议采用getTimeInMillis.






0 0