有关Java中日期格式化的效率实录

java中格式化日期为固定格式的字符串,无外乎有两种方法:DateFormat 和String.format(JDK1.5+)

但是哪个方法效率更高呢?本人做了一个实验,发现了一个很有趣的现象。

当系统第一次使用SimpleDateFormat进行格式化日期对象的时候,消耗资源是比较大的。而第一次使用之后,每次再使用该对象甚至是该类不同的对象的同一个方法时,又会极大的节省时间。而String.format虽然也是存在第一次使用时资源消耗较大,但是从第二次开始,资源消耗减少的量却不是很明显了。

总结:第一次使用两种方法时SimpleDateFormat方法效率很低,耗费时间大概是String.format的10倍左右。

          从第二次开始,SimpleDateFormat效率提高1000倍左右,String.format提高10倍左右.消耗时间只占String.format的1/10.

          简单计算:如果系统使用日期格式化超过100次,就应该使用SimpleDateFormat,否则就应该使用String.format

PS:无论第二次使用SimpleDateFormat时是不是new了一个新的format对象,效率变化并不明显。

附源代码:

public static void main(String[] args) {
  int count = 1;
  long start = System.nanoTime();
  SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  for(int i=0;i<count;i++) {
   sf.format(new Date());
  }
  System.out.println("ecllapsed:"+(System.nanoTime()-start));
  
  start = System.nanoTime();
  for(int i=0;i<count;i++) {
   String.format("%1$tF %1$tT", new Date());
  }
  System.out.println("ecllapsed:"+(System.nanoTime()-start));
  
  start = System.nanoTime();
  count = 1;
  for(int i=0;i<count;i++) {
   sf.format(new Date());
  }
  System.out.println("ecllapsed:"+(System.nanoTime()-start));
  start = System.nanoTime();
  for(int i=0;i<count;i++) {
   String.format("%1$tF %1$tT", new Date());
  }
  System.out.println("ecllapsed:"+(System.nanoTime()-start));
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值