localdatetime current java jodatime

java - current - LocalDateTime de Jodatime es lento cuando se usa por primera vez



jodatime datetime java (3)

Joda-Time está diseñado para sistemas empresariales de larga duración en los que un tiempo de carga inicial único es irrelevante en comparación con el rendimiento más rápido durante el resto de la aplicación.

Actualmente estoy probando algunas tecnologías de aplicaciones web en un proyecto java y me preguntaba por qué las páginas a veces se cargan rápido y otras tardan casi 5 segundos en cargarse.

Finalmente descubrí que es esta línea.

LocalDateTime now = new LocalDateTime();

Cuando se llama la primera vez, se tarda una eternidad en obtener la hora actual. Sin embargo, cuando se llama después de eso, incluso en un lugar completamente diferente, es bastante rápido.

Actualmente estoy usando

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

¿Alguien ha tenido alguna experiencia similar? Realmente atascado aquí ... Podría usar LocalDateTime en algún momento al principio de mi aplicación para solucionar las llamadas subsiguientes, pero esto parece bastante aburrido.

EDITAR

Mal uso la primavera para eso ahora

@Service public class JodaTimeLoader { public JodaTimeLoader() { LocalDateTime loadMe = new LocalDateTime(); } }


La primera vez que haces eso, Joda Time carga una cantidad de recursos estáticos (por ejemplo, sus descriptores de cronología ), que es el costo que estás viendo. Este es un costo único; Se paga una vez por proceso. Cárguelo temprano durante el inicio si realmente le molesta, quizás de esta manera:

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


Se tarda unos 77 ms en mi sistema. Eso es bastante largo para una clase.

Tal vez solo tenga que llamarlo una vez en el inicio para asegurarse de que ya está cargado.

Si desea la hora actual rápidamente, puede usar System.currentTimeMillis (); que toma 0.0018 ms la primera vez que lo llamo.