Uno de los dichos que aún escuchas hoy en día de otros desarrolladores es que no solo Java es lento, sino que Reflection es una parte excepcionalmente lenta del JDK. Esta publicación está dirigida a aquellos que creen eso o desean tener una conversación constructiva con los creyentes.
Los temas técnicos presentados en esta publicación tienen años de antigüedad, pero de alguna manera algunas de las cosas son sorprendentes cuando las descubres. Así que incluso si eres un desarrollador Java experimentado, puedes encontrar algunos puntos interesantes aquí.
¿Cómo puede alguien medir que la reflexión es lenta? El primer pensamiento es ejecutar una aplicación de evaluación comparativa. Esto podría hacerse tan simple como sigue.
inicio largo = System.nanoTime ();
method.invoke (“reflexión”);
parada larga = System.nanoTime ();
…
inicio largo = System.nanoTime ();
“reflexión” .length ();
parada larga = System.nanoTime ();
- ¿Cuáles son algunos refranes de Gishwhes?
- He perdido mi fe en la humanidad, siento que todo ser humano es un tramposo, ¿cómo puedo confiar en los humanos de nuevo?
- ¿Qué pasaría si un policía (real) estacionara su auto frente a muchas personas, escuchara música fuerte de su auto y comenzara a bailar para la gente?
- Cómo convertirse en un hombre más reservado y tranquilo.
- ¿A cuántas personas has salido?
Los resultados son bastante obvios: la versión de reflexión tarda unos 15000 nano segundos, que es de 15 microsegundos; La invocación del método toma 2.2 microsegundos, que es aproximadamente 7 veces más rápido .
¿Pero fue realmente una prueba limpia, que nos muestra resultados reales? Resulta que no exactamente. La prueba estaba lejos de ser limpia. Lo más obvio es que, por primera vez, los resultados serán más lentos, debido a la posible Carga de clases , la inicialización y otras actividades, lo que puede resultar en la creación de objetos excesivos y la invocación de la recolección de basura .