Pblème de lenteur de mon application

Kepone Messages postés 25 Date d'inscription vendredi 2 août 2002 Statut Membre Dernière intervention 3 juillet 2008 - 15 janv. 2005 à 17:24
metalcoder Messages postés 193 Date d'inscription jeudi 14 février 2002 Statut Membre Dernière intervention 25 mars 2011 - 17 janv. 2005 à 17:38
Salut, j'ai déja poster un sujet la dessus mais je ne m'en suis pas sortit à l'époque.
J'ai une appli MDI avec de nombreuses fenetres contenant des listView qui me permettent
d'afficher le contenu de table Access.

L'appli (Asser importante) marche tres bien et me permet d'effectuer le suivi du parc informatique client à la perfection (garantie matériels, contrat de maintenance, appel téléphoniques, intervention, Interface avec mon logiciel de gestion commerciale pour récupérer les clients et les articles déja saisie, etc ....)

Seulement l'appli est lente . Encore juste après le lancement, ca va sa tourne, mais alors après cinq minutes c'est plus la peine sa n'avance plus. Du coup, j'ai fait des vérifs sur mon prog :
fermeture des recordsets après avoir terminé de les utiliser : OK
déchargement de mes objets par : Set "Objet" = Nothing : OK

et sa continue à ne pas avancer. Si quelqu'un connait un utilitaire qui permette de diagnostiquer le problème ou même avait une idée sur la question sa m'arrangerait . Je peux même vous mettre la source à dispo et les bases de données nécessaires y'a pas de problèmes.

Merci d'avance.

6 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
15 janv. 2005 à 20:04
Salut Kepone
En général, les applis qui se mettent à ramer après un certain temps sont dûes à l'utilisation de tableau en mémoire dont la taille augmente.
Mémorises-tu beaucoup d'infos en mémoire ?
Si oui, essaye de voir si tu ne peux pas mettre ces données dans une DB
Si non, tout dépend du genre d'objets que tu utilises ...
Par exemple, utilises-tu des Load d'objets ?
Si oui, est-ce que tu les UnLoad correctement ?
Quand tu as besoin d'en ajouter de nouveaux, cherches-tu des 'trous' dans la liste de ces objets ...
Revois éventuellement aussi l'étendue des variables : Quand une variable est déclarée en Public, est-ce vraiment utile ?
Il faudrait voir le code pour aller plus en avant ...

Vala
Jack
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
15 janv. 2005 à 20:10
Dernière minute :
Il faut savoir aussi que les bases Access ont le facheux inconvénient de grossir (*) avec le temps car mal gérée (en version 97 en tout cas, je ne connais pas les suivantes).
(*) si tu fais beaucoup d'insertions / suppressions
La solution que personnellement j'ai adopté est de créer une DB vide régulièrement, de rapatrier les données et de supprimer l'ancienne DB.
J'ai des applis qui tournent pendant des mois et qui utilisent cette 'astuce' pour éviter la saturation et longs les temps de réponse de la DB.

Une chose que tu pourrais faire, c'est de chronométrer (avec GetTickCount) le temps d'accès à ta DB (temps d'exécution d'une requète) lors d'une consultation standard et voir si c'est ce temps là qui augmente ou si c'est la mémoire qui gonfle et qui ralenti l'appli elle même.

Vala
Jack
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
asem67 Messages postés 145 Date d'inscription mardi 3 septembre 2002 Statut Membre Dernière intervention 24 février 2008
15 janv. 2005 à 23:02
Slt

meme probleme !!!

mais deja au demmarage du prog

prnd sont temp pour se charger et ce depuis que la bd est passer d'env. 1 Mo a +de 7 Mo

une solution ????

(gestion de stock pces machines avec photo de la piece ( 1 photo env. 50 Ko)

composer de 6 tables entre 50 et +de 1500 enregistrement par table)
A+
ASEM67
0
metalcoder Messages postés 193 Date d'inscription jeudi 14 février 2002 Statut Membre Dernière intervention 25 mars 2011 1
17 janv. 2005 à 05:48
J'ai une appli qui tourne presque 24/24h avec au bout une base access 2002 en mode dao et ca tourne tres bien (la base est petite en taille (2 mo) mais contient plus de 5400 enregistrements) . J'ai pas le probleme de lenteur mais tout dépend bien sur de l'appli.

Essaye de déboguer ton appli pour voir ou elle passe le plus temps, peut etre une boucle d'attente qui meriterais un doevents.
Regarde aussi tes déclarations de variables par ex: dim i,s as integer (i est variante et s un integer !) en mémoire c'est pas du tout pareil)

regarde aussi les fonctions de chaine de caractères (un bon instr vaut mieux qu'un mauvais mid pour rechercher un caractère)...j'en ai fait l'experience !!)

sinon bien sur comme disait Jack, programme toi une fonction avec GetTickCount afin de savoir ou ton programme est le plus long

Si tu utilise le mode DAO tu fait surement un rst.movelast et movefirst...ca prend 1s ou 2 mais dans une boucle c'est enorme...

Voila les premières idées qui me viennent mais ton problème demande a etre approndondis

@+
Metalcoder
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Kepone Messages postés 25 Date d'inscription vendredi 2 août 2002 Statut Membre Dernière intervention 3 juillet 2008
17 janv. 2005 à 15:50
Ok merci les gars. Effectivement je suis en mode DAO et je fais beaucoup de movefirst movelast pour mes enregistrements dans des boucles. Je vais tester GetTickCount (je ne connaissait pas) Pour ce qui est de la mémorisation d'infos en mémoire je n'en mémorise pas beaucoup si ce n'est le nom des forms qui en ouvre d'autre afin de faire une gestion de form mère / fille qui fonctionne. Sinon tous les enregistrements de base de données sont chargées dans des listview. Il peut par moment y avoir 5 listView de charger en même temp. Une question : si une forme contient une listview et des boutons, lorsque j'Unload la form les objets qu'elle contient sont bien déchargées eux aussi ??

je vais continuer à chercher et je vous tient au courant.
0
metalcoder Messages postés 193 Date d'inscription jeudi 14 février 2002 Statut Membre Dernière intervention 25 mars 2011 1
17 janv. 2005 à 17:38
Les données s'effacent dans un listview apres un unload mais rien t'empechent de le vidé avant de partir.



Si tu a beaucoups de données a afficher, desactive l'affichage du listview pendant son remplissage, tu va gagner tu temps



Je suppose que tu efface ton listview avant de le re-remplir ?



Si tu n'y arrive pas, tu peut m'envoyer ton prog a metalcoder@hotmail.com, je regarderais si je vois qqchose.



@+
Metalcoder
0
Rejoignez-nous