为什么 joda 时间会在占用大量内存的时间之间产生差异

Why is joda time get difference between hours taking so much of memory

我有以下功能:

public static int getDiffHour(Date first) {
        int hoursBetween = Hours.hoursBetween(new LocalDate(first), new LocalDate()).getHours();
        return hoursBetween;
    }

我正在尝试计算两个日期之间的小时差。

这是我的 Traceview:

该函数的执行耗费了大量的时间和资源——我在这里错过了什么。由于此功能占用的 CPU 时间太长,我的服务在 5.0.1 上被终止。

编辑:

深入挖掘,我发现 99% 的 CPU 时间都被 LocalDate init 占用了。有什么办法可以避免这种情况并提供预先计算好的日期吗?

编辑 2:实施 Joda 2.6 后:

这个issue might have been solved with the newest Joda-Time-release v2.6 because the class initialization of class DateTimeZone (where you observe huge amounts of time spent) no longer calls the method setProvider0(), see also this commit.