我有一个遗留Java应用程序,其性能瓶颈是由于Calendar的使用。由于Calendar是一个可变对象,我们必须在每次获取它时进行克隆。
public Calendar getCalendar() {
return (Calendar)calendar.clone();
}
我们还发现,在我们的应用程序中,我们根本没有使用时区信息。我想知道,我们应该将代码重新计算到
public long getTimestamp() {
return timestamp;
}
当我们需要执行日期/时间算术运算时,我们只会将时间戳转换为Calendar或Joda DateTime。
或者为了防止无法预料的未来,我们应该使用Joda DateTime吗?
public DateTime getDateTime() {
return dateTime;
}
答案 0 :(得分:4)
通常情况下,如果您不关心时区并且必须存储大量时间戳,则最好将它们存储为long-s。每个时间戳为8个字节。围绕'long'的所有面向对象的日期时间包装器每个时间戳将消耗至少24个字节。当您需要执行任何日期时间算法时 - 将您的长时间戳转换为Joda DateTime(或MutableDateTime)。它们都是作为“长”字段的包装器实现的,因此从长时间创建它们非常便宜。
答案 1 :(得分:0)
你绝对应该使用JodaTime。确保在java.util.Date中传递日期,这是UTC自1970年1月1日以来的很长一毫秒。