从Java日历迁移到乔达日期时间

以前,当我第一次设计一个股票应用相关的软件,我决定使用java.util.Date来代表股票的日期/时间信息。

后来,我知道大多数的方法java.util.Date已经过时了。 因此,很快,我重构我的代码来使用java.util.Calendar

然而,有2缺点我遇到。

  1. 构建java.util.Calendar是比较慢java.util.Date
  2. 内访问getCalendar的方法, Stock类,我需要克隆拷贝, Calendar是一个可变类

这里为Stock.java当前源代码

最近,我发现乔达时。 我做下面的标杆,创造百万java.util.Date java.util.Calendarorg.joda.time.DateTime 我发现org.joda.time.DateTime进行优于java.util.Calendar ,实例化过程。

这里是标杆 从Java日历迁移到乔达日期时间


结果。

这个实例化的速度是很重要的,股市尤其是许多实例将被创建,代表股票的悠久历史价格。

你觉得它是值得迁移从Java日历乔达日期时间,从而获得应用程序的速度性能? 有没有我需要注意什么陷阱?

--------------解决方案-------------

需要注意的是java.util.Date是可变过-所以,如果现在您使用的是问题Calendar ,它会使用是一个问题Date了。 也就是说,使用约达时间绝对值得这样做只是因为它是一个好得多的API。

如何一定是你的表现实际上是一个问题,在您的特定应用程序? 你说会有“很多情况下”的Stock创造了...有多少? 你有异形呢? 我不希望它实际上使在大多数情况下一个显著的差异。 它不是从你的基准测试图很明显你在实际测量。

移动到约达时间是一般一个好主意,但我会衡量性能,看看它到底有多大的区别,使你。

为什么你需要一个Calendar在你的Stock类? 我觉得用Date来表示一个时间点是好的。 这似乎是你想要的,因为你要在Calendar中的股票对象为不可变的,它的Date类应该是,如果你忽略不推荐使用的方法。

您可以使用一个临时Calendar的时候,你需要做的时间操作上的DateStock类:

Calendar calendar = Calendar.getInstance();
calendar.setTime(stock.getDate());
System.out.println(calendar.getYear());

这样你仍然可以存储Date在你的Stock类,它应该有最好的表现,当只有存储和检索Stock从数据存储对象。 如果你这样做一次,你还可以重复使用相同的几个操作Calendar对象。

如果你不喜欢的Calendar界面,您仍然可以使用约达时间做一次操作。 如果需要,您也许可以转换日期和乔达时间,做时间的操作,而且可以存储Date对象的Stock类。

我用乔达在过去,这是一个真棒库。

在性能方面,你将不得不测试它,很遗憾。 但是,重构你的代码似乎太多了。 就个人而言,我用Date贯穿了我的整个应用程序(包括数据库存储和检索),并用乔达只有当我需要的数据操作。 乔达只计算领域需要的时候,所以我想的开销会比使用Java API类要低得多; 此外,你不会有对象的版本问题,传送和处理Date的对象在你的数据库,序列化对象和等。 我不希望乔达打破这种兼容性,但它不太可能使用Date

它始终是更好地移动到乔达时间一般。 但是,这确实是值得移动到乔达时间为您的项目是基于有关的日期使用您的用例。 在演示文稿看幻灯片编号46,用于与性能有关的数字对于一些operationslink文本

分类:java的 时间:2015-03-16 人气:37
本文关键词: Java中,jodatime
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.778 (s). 11 q(s)