Mejorar tiempo de ejecucion de un programita

Acabo de descubrir por que mi programa es lento al arrancar
Resulta que todos las consultas (select ...) se ejecutan al inicio para llenar unos jTables.
En que momento debo cargar las consultas?

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de neko069

Lo ideal sería, bajo demanda,

Lo ideal sería, bajo demanda, es decir, cuando construyes las tablas...es lo primero que se me ocurre, y puedes indicar mediante banderas cuándo (volver a) cargar la información.

Imagen de ezamudio

dos opciones

Una es que lo hagas como dice neko, bajo demanda. Así la app carga rápido al inicio, pero cada vez que necesites datos nuevos se va a tardar un poquito en lo que va por los datos que necesita.

Otra es que sigas cargando todas las consultas al inicio, pero en un hilo separado. Así puede aparecer la GUI rápido y conforme las consultas vayan terminando, se van poblando los datos donde se requieren.

La primera es más fácil de implementar y puede ser mejor porque si alguien ejecuta la app y solamente ve un par de tablas, ya no cargaste cosas que nunca van a ver.

A todo esto, estoy asumiendo que estás hablando de una app en Swing o algo así, es decir, escritorio, no web.

Como es bajo demanda

me podrian dar un link o ejemplo de como implementarlo?

Primero usa un profiler para

Primero usa un profiler para identificar donde está consumiendo la memoria.

Las sospechas serán solo eso hasta que puedas tener alguna evidencia de que es lo que está causando la tardanza.

Si le dedicas varios días a hacer la parte esa de "bajo demanda" ( que de todas formas vas a tener que hacer ) y luego resulta que el problema era para obtener la conexión habrás estado resolviendo el problema equivocado. Lo mismo si haces lo contrario, si te enfocas en la conexión y luego resulta que el problema era otro.

Java viene con la herramienta VisualVM, yo la he usado poco pero está buena.

A mi parecer creo que es mas

A mi parecer creo que es mas eficiente la idea de neko de hacerlo bajo demanda, ya que en muchas ocasiones le presentamos al usuario información que no necesita y que simplemente no la va a ver, es mejor que la aplicación solo muestre los datos que el usuario necesita, porque se me ocurre que si es una aplicación con conexión a base de datos los datos se vayan agregando a la tabla en el momento que el usuario solicite visualizarlos, también la idea de hacerlo en hilos es buena, pero a mi parecer no solucionaría el problema, simplemente no lo haría tan visible, puesto que en tiempo de ejecución solo estarías "ocultando" la carga de los datos, y probablemente le mostraras al usuario información que no requiere, exito!!!

@Guitarnoimano Pero hay que

@Guitarnoimano Pero hay que medir antes.

Hacerlo bajo demanda podría hacer que lo que se tarda "mucho" al principio, ahora se tarde "algo" siempre, es decir solamente se reparte el problema en varios puntos.

A mi me parece mejor la opción de cargar en background.

En alguna ocasión yo lo que hacía era serializar todos los catalogos en la máquina del cliente para que la siguiente vez que se iniciara se cargaran de ahí.

Mientras el usuario empezaba a usar la aplicación se iban revisando los catalogos para ver si algo había cambiado, pero eso pasaba muy poco.

Imagen de neko069

Pues yo digo que la idea de

Pues yo digo que la idea de neko es más eficiente .... ;¬) je,je
Lo cierto es que @OscarRyz tiene un buen punto, y bastante fuerte, que es quitarte la duda antes de empezar a pegarle a la tecla.
La sugerencia que hice, y como otras, las he hecho en base a mi (poca) experiencia, y bueno, pues creo que no soy el único que pensó en ésa posibilidad, tal como lo señalo @ezamudio en su post, agregando también otra sugerencia.
Sería bueno quitarse la duda como bien señala Oscar, y sería un punto de partida para apostar... digo, digo, para saber a ciencia cierta, qué es lo que hace que la carga de datos se tarde...
Por otro lado, ahora el que pediría alguna guía para manejar el Visual Vm sería yo, así que empezaré a revisar documentación...
Gracias por ésta retroalimentación.