Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Aplicacion lenta (https://www.clubdelphi.com/foros/showthread.php?t=16533)

Eduardo 01-12-2004 13:03:31

Aplicacion lenta
 
Hola

Uso Delphi 7 y tablas paradox y estoy probando mi aplicaicon en una red con 4 usuarios, todos con Windows 2000 y un minimo de 256 mb.

El problema que tengo es que la aplicacion se vuelve lenta sin razon aparente, unas veces es nada mas entrar en uno de los mantenimientos, otras cuando llevan tiempo trabajando.

La aplicacion la tenia instalada en un servidor,y la he pasado a uno de los puestos, pero sigue igual, por lo que opino que el problema no es de la red, sino de la propia aplicacion.

Tampoco creo que el problema sea de dejar 'cosas' sin destruir, porque como ya digo, a veces es a los dos minutos de entrar cuando se vuelve lenta y otras veces es a los 10 minutos.

¿es posible que sea problema del BDE? o bien ¿es posible que sea problema del propio Delphi?

Los puestos no tienen nada cargado, de hecho les he quitado hasta el antivirus para poder chequearlo bien.

Una cosa curiosa, uno de los usuarios me ha comentado que si deja la aplicacion, que iba lenta, 'sin tocar' durante un tiempo, comienza a funcionar otra vez bien, es como si hubiera consumido memoria, y la 'soltara' pasado un tiempo.

No creo que sea problema de cableado, pues les he pueto un switch y el cableado nuevo entre los 4 puestos.

Les agradeceria cualquier opinion sobre este tema.

Gracias a todos.

Eduardo

LordSigma 01-12-2004 14:26:49

Tengo una red de 20 usuario con Win98 en los puestos y NT en el file server, sobre tablas Paradox (todo un reto) y lo que aprendi es que cuantas mas cosas hagas con SQL mas rapido va a funcionar tu aplicacion.
Fijate que las consultas y entradas esten en SQL y no con metodos de la TTable, eso va a acelerar mucho las cosas.
Igualmente te recomiendo un Firebird, vas a mejorar mucho y la calidad de los datos y consistencia no van a tener comparacion con las Paradox. Suerte !!!

Eduardo 01-12-2004 17:00:16

Gracias por tu respuesta, el caso es que si fuera problema del paradox, iria lento el formulario o el listado o lo que fuera, pero lo que me pasa es que la aplicacion cada vez va mas lenta, hasta que llega un punto que se hace insoportable de trabajar con ella. Lo curioso es que si la dejas en resposo, al rato, vuelve a funcionar con normalidad, como si hiciera un 'garbaje collection' , creo que se llamaba asi, es decir una limpieza de memoria.

¿os ha pasado algo parecido?

mamcx 01-12-2004 18:17:01

Lo unico que te puede decir es que sin hacer un profiling de la aplicacion es programar por adivinacion. Conoces cuales son los metodos mas lentos? Realmente no hay memory leaks? Guardas en un log las consultas sql y cualquier otro comportamiento? Puedes reproducir de la forma mas simple posible los puntos de falla? Has usado el medidor de recursos de NT y sabes que EXACTAMENTE es el incremento, si es mayor CPU o mayor Memoria o que?

Si la aplicacion progresivamente es mas lenta, es porque hay contencion en los recursos (ie: Un recurso esta bloqueado y bloquea los procesos que intentan acceder a el) o hay recursos que no se liberan (memoria...?) o estas cargando listas de algo y no se estan liberando.

Seria util que trates de reducir el area de investigacion. Si puedes crear una version simplificada que imite la operacion y miras si se presenta el problema. Tambien puedes tratar con una herramienta de profiling. De esta pagina http://www.automatedqa.com/ te bajas la version gratis MemProof o AQtime. Sin embargo, no te va a ayudar magicamente sin sentarse a analizar las cosas...

Eduardo 01-12-2004 18:28:43

Mario, gracias por interesarte por mi problema

Sobre lo que me comentas, uso habitualmente memprof, e incluso me he bajado una version nueva para ver si sacaba algo en claro. Efectivamente, a primera vista, lo que debe pasar es que no destruya los objetos o listas que se han creado antes, pero en este caso, la cosa es mas curiosa, porque si dejas la aplicacion en reposo, luego vuelve 'a cojer fuerza'.

Sobre CPU o memoria, lo que sube es la memoria, lo cual vuelve a hacer suponer que es algo que no destruyo.

Por esta razon, he llegado a pensar que era algun bug de delphi o de paradox y he consultado al foro por si a alguien le habia pasado algo semejante.

Una consulta de tontos, ¿que es mejor? destroy o free. A ver si lo estoy haciendo al reves.

Gracias de nuevo.

LordSigma 01-12-2004 20:43:43

FREE !!!!!!!!!!!!!! El Destroy no se debe usar !!!

mamcx 02-12-2004 02:42:32

Si tu aplicacion destroye y crea rutinariamente todo el tiempo objetos de memoria pequeños, puede ser un problema de fragmentacion de memoria... Es algo que se nota en maquinas con multiples procesadores...

Si ya sabes que es la memoria, entonces enfila baterias y trata de analizar cual es el comportamiento de tu aplicacion al respecto y chequea los contadores a ver cual de todas las memorias se esta creciando, si el heap o que...

Eduardo 02-12-2004 09:25:04

Gracias a todos por vuestra respuesta. Voy a repasar el codigo y si encuentro algun problema, os lo dejare reportado en este hilo por si le puede servir a alguien

Un saludo.


La franja horaria es GMT +2. Ahora son las 19:31:23.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi