java 时间类 joda_Java日期类Joda-time的使用及性能对比
在產品的性能優化過程中發現JDK的日期類Calendar使用起來太慢,于是找了替代方案,驚喜的發現Joda-time類庫,提供的API功能豐富,關鍵的是性能要比JDK的Calendar要高出許多。
1)日期的實例化//構造方法有很多,對比Calendar類,實例化性能高出一倍有余
//如果帶上時間戳作為構造函數的性能會更高
DateTime?dt=new?DateTime();
2)日期的格式化//實例化formatter對象
FastDateFormat?fdf?=?FastDateFormat.getInstance("yyyy-MM-dd?HH:mm:ss.SSS");
//創建日期,這里也可以用joda的DateTime對象
Date?d?=?new?Date();
fdf.format(d);
3)日期的解析//實例化formatter對象
FastDateFormat?fdf?=?FastDateFormat.getInstance("yyyy-MM-dd?HH:mm:ss.SSS");
//解析日期
fdf.parse("2016-04-23?11:23:45.234");
以上是幾個主要的API,更多的API還請自行研究,一定會有驚喜。
參考以下測試代碼:@Test
public?void?testCreateCalendar()?{
long?start?=?System.currentTimeMillis();
for?(int?i?=?0;?i?
Calendar?cal?=?Calendar.getInstance();
cal.set(Calendar.MILLISECOND,?(int)?start);
}
System.out.println(System.currentTimeMillis()?-?start);
}
@Test
public?void?testCreateJodaTime()?{
long?start?=?System.currentTimeMillis();
for?(int?i?=?0;?i?
new?DateTime(start);
}
System.out.println(System.currentTimeMillis()?-?start);
}
@Test
public?void?testParseDate()?throws?ParseException?{
long?start?=?System.currentTimeMillis();
SimpleDateFormat?sdf?=?new?SimpleDateFormat("yyyy-MM-dd?HH:mm:ss.SSS");
for?(int?i?=?0;?i?
sdf.parse("2016-04-23?11:23:45.234");
}
System.out.println(System.currentTimeMillis()?-?start);
}
@Test
public?void?testJodaParseDate()?throws?ParseException?{
long?start?=?System.currentTimeMillis();
FastDateFormat?fdf?=?FastDateFormat.getInstance("yyyy-MM-dd?HH:mm:ss.SSS");
for?(int?i?=?0;?i?
fdf.parse("2016-04-23?11:23:45.234");
}
System.out.println(System.currentTimeMillis()?-?start);
}
@Test
public?void?testFormatDate()?throws?ParseException?{
long?start?=?System.currentTimeMillis();
SimpleDateFormat?sdf?=?new?SimpleDateFormat("yyyy-MM-dd?HH:mm:ss.SSS");
Date?d?=?new?Date();
for?(int?i?=?0;?i?
sdf.format(d);
}
System.out.println(System.currentTimeMillis()?-?start);
}
@Test
public?void?testJodaFormatDate()?throws?ParseException?{
long?start?=?System.currentTimeMillis();
FastDateFormat?fdf?=?FastDateFormat.getInstance("yyyy-MM-dd?HH:mm:ss.SSS");
Date?d?=?new?Date();
for?(int?i?=?0;?i?
fdf.format(d);
}
System.out.println(System.currentTimeMillis()?-?start);
}
綜合比較下來,joda-time的性能差不多是calendar的1.5-2倍左右。
總結
以上是生活随笔為你收集整理的java 时间类 joda_Java日期类Joda-time的使用及性能对比的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 模拟网页行为之实践篇二
- 下一篇: db2 mysql sql server