Cita:
Empezado por Kenobi
durante la carga de la aplicacion se crean los distintos formularios asi como el modulo de datos (este va de primero) y dentro de el hay pues tablas y consultas (como 15 o menos de cada uno)
|
Ok, mucho mejor así.
Hay varias cosas que me llaman la atención; Yo te las comento y luego tú verás si está dentro de tus posibilidades modificarlas o no.
(1) Creas todos los formularios al iniciar la aplicación, cosa que no es necesaria. Crea los formularios cuando los vayas a visualizar y destruyelos al ocultarlos. Supongo que al iniciar no necesitas tenerlos todos visibles.
(2) Algo similar pasa con las tablas y consultas. Veo que abres todas al iniciar. Tampoco es necesario si no las vas a utilizar todas en ese momento. Abre cada una en el momento en que la necesites. Incluso en una de ellas haces el
Last, con lo que obligas a recorerla toda.
No digo que no debas hacerlo, lo que no se es si es necesario que lo hagas todo en ese punto (al iniciar).
(3) El Sleep(10) es un retardo innecesario que estás introduciendo.
(4) Por último haces un recorrido utilizando ComponentCount; Este método es muy lento. Se puede cambiar y utlkizar un TObjectList para contener los TDataset y hacer el recorrido sobre la lista. (*NOTA*)
Son algunas cosas, lo que sí haría yo es intentar añadir a un Log marcas de tiempo de lo que tarda cada operación. Para saber dónde estás perdiendo tiempo. (*NOTA*) Por ejemplo en el punto (4) tal vez no se esté perdiendo nada de tiempo y al hacer el cambio no ganes nada (y pierdas tiempo de programación).
El fácil poner un Memo oculto y entre las líneas de tu código añadir sentencias como esta:
Código Delphi
[-]
Memo1.Lines.Add('Abriendo tabla 1 ==> ' + DateTimeToStr(Now));
...
Memo1.Lines.Add('Creando form ==> ' + DateTimeToStr(Now));
...
Memo1.Lines.Add('Creando form ==> ' + DateTimeToStr(Now));
...
Cuando la carga esté completa, lo grabas a disco utilizando:
Código Delphi
[-]
Memo1.SaveToFIle('c:\temp\Carga.Log');
Con eso tendrás marcas de tiempo aproximadas de lo que está tardando cada parte y así podrás afinar la solución...
Un saludo.