第一次使用时,Jodatime的LocalDateTime很慢

时间:2011-06-08 14:55:12

标签: java jodatime

我目前正在java项目中测试一些webapp技术,并且想知道为什么页面有时会加载很快,有时需要花费大约5秒来加载。

我终于发现它就是这条线

LocalDateTime now = new LocalDateTime();

当它第一次被召唤时,需要永远获得当前时间。 在那之后调用时,即使是完全不同的地方,它也会非常快。

我正在使用

    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>1.6.2</version>
    </dependency>

有没有人有类似的经历?真的卡在这里..我可以在我的应用程序的早些时候使用LocalDateTime来紧固后续调用 - 但这看起来相当沉闷。

修改

我现在误用了Spring:

@Service
public class JodaTimeLoader {

  public JodaTimeLoader() {
    LocalDateTime loadMe = new LocalDateTime();
  }

}

3 个答案:

答案 0 :(得分:12)

Joda-Time专为长期运行的企业系统而设计,与其他应用程序中的更快性能相比,一次性前端加载时间无关紧要。

答案 1 :(得分:9)

第一次这样做时,Joda Time加载了许多静态资源(例如,chronology descriptors),这是您所看到的成本。这是一次性费用;你按程序支付一次。如果真的困扰你,请在启动期间尽早加载它,也许是这样:

static {
    // Build the local caches inside Joda Time immediately instead of lazily
    new LocalDateTime();
}

答案 2 :(得分:6)

我的系统大约需要77毫秒。这对于一堂课而言相当长。

也许你只需要在启动时调用它一次以确保它已经加载。

如果您想快速获得当前时间,可以使用System.currentTimeMillis();我第一次打电话时需要0.0018毫秒。