Почему время йода отличается от часов, занимающих так много памяти?

У меня есть следующая функция:

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

Я пытаюсь получить разницу в часах между двумя датами.

Вот мой Traceview:

Для выполнения этой функции требуется сумасшедшее количество времени и ресурсов - чего мне здесь не хватает. Мой сервис убит на 5.0.1 из-за этого огромного процессорного времени, затрачиваемого этой функцией.

Редактировать:

Углубившись вглубь, я обнаружил, что инициализация LocalDate занимает 99% процессорного времени. Есть ли способ, которым я могу избежать этого и предоставить предварительно рассчитанную дату?

Редактировать 2: После реализации Joda 2.6:

1 ответ

Решение

Эта проблема могла быть решена с помощью новейшей версии Joda-Time v2.6, потому что инициализация класса class DateTimeZone (где вы наблюдаете огромное количество времени) больше не вызывает метод setProvider0()Смотрите также этот коммит.

Другие вопросы по тегам