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

2022-09-03 01:03:04

我目前正在一个java项目中测试一些webapp技术,并且想知道为什么页面有时加载速度快,有时加载时间几乎需要5秒。

我终于发现是这条线

LocalDateTime now = new LocalDateTime();

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

我目前正在使用

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

有没有人有过类似的经历?真的卡在这里..我可以在应用程序的早期使用LocalDateTime来加快后续调用 - 但这似乎很无聊。

编辑

我现在误用了春天:

@Service
public class JodaTimeLoader {

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

}

答案 1

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


答案 2

第一次这样做时,Joda Time会加载许多静态资源(例如,其年表描述符),这就是您看到的成本。这是一次性成本;每个进程只需支付一次。如果它真的打扰你,在启动期间尽早加载它,也许像这样:

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

推荐