Utilisation abusive ressource windows

pulpul74 Messages postés 77 Date d'inscription jeudi 11 octobre 2007 Statut Membre Dernière intervention 27 septembre 2010 - 6 juin 2008 à 11:38
bonjourcheval Messages postés 228 Date d'inscription mercredi 13 décembre 2000 Statut Membre Dernière intervention 8 août 2011 - 13 juin 2008 à 18:19
Bonjour,
J'ai actuellement installé une applic en VB6 chez un client. Cette applic à l'heure actuelle dois récupérer les données d'un fichier texte, ensuite je fais différents tri pour en extraire les données qui m'interresse, j'ai pas mal de boucle d'attente et de tri. Mes boucle ne dépassent jamais 100, et je fais mes cycle tout les 500ms.
En fait mon problème c'est que quand je lance cette applic, tou va bien, mais plus on avance dans le temps, plus elle utilise de la ressource windows. j'étais rendu à 50% du processeur utilisé, 40M de mémoire prise.... J'aimerai savoir s'il y a une solution pour utilisé moins de ressource, ou au moins les rendres, ou bien optimiser le code....Si vous avez une solution, merci d'avance

8 réponses

NHenry Messages postés 15123 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 20 mai 2024 159
6 juin 2008 à 11:57
Bonjour

Il faut voir ton appli dans son ensemble.

Mais pour être sûr de libérer un objet, il faut lui assigner Nothing.
Ensuite je ne puis rien te dire de plus, c'est vraissemblablement ton code qui doit se charger progressivement.

Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Mon site
0
pulpul74 Messages postés 77 Date d'inscription jeudi 11 octobre 2007 Statut Membre Dernière intervention 27 septembre 2010
6 juin 2008 à 14:24
Pour les lecture ou ecriture d'un fichier texte, j'utilise Open. y'a pas moyen de gagner la dessus?
Sinon je suis en option explicit, cela facilite t'il les choses.
Et est ce que l'utilisation de boucle (For-Next) peut utiliser autant de mémoire ( à noter que j'ai des boucles dans des boucles), parce que a part ca et des traitement de chaine (genre mid), c'est presque tout ce que j'ai...
J'ai aussi beaucoup fractionné en multiple 'public function' dans des modules différents. Cela est il une bonne solution?
0
NHenry Messages postés 15123 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 20 mai 2024 159
6 juin 2008 à 14:49
Bonjour

Option Explicit est indispensable en VB6.
Il est possible éventuellement, que tu interrompe une procédure (contenant un DoEvents) et que cela se fasse en cascade, alors là il y a un risque, mais sinon, d'après ce que tu as écris, je ne vois rien de grave (même parfois c'est Très bien).

Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Mon site
0
pulpul74 Messages postés 77 Date d'inscription jeudi 11 octobre 2007 Statut Membre Dernière intervention 27 septembre 2010
6 juin 2008 à 14:55
J'avais ajouté quelques DoEvents dans certaines boucle pensant que cela pourrai faciliter les choses.
Faut il que je les enlève? Je n'en ai pas forcement besoin dans des boucle For-Next.
0

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

Posez votre question
NHenry Messages postés 15123 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 20 mai 2024 159
6 juin 2008 à 15:12
Bonjour

Tu peux essayer avec et sans pour voir la différence, mais à toi de voir si cela te convient.

C'est assez difficile de dire la cause, sans avoir la source, mais je suppose que c'est pro (tu fais référence à un client), donc je ne serais pas exigeant. Mais je ne puis t'en dire plus sans avoir plus d'info, mais je ne vois pas vraiment lesquels (d'infos) seraient déterminantes. Dsl.

Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Mon site
0
pulpul74 Messages postés 77 Date d'inscription jeudi 11 octobre 2007 Statut Membre Dernière intervention 27 septembre 2010
6 juin 2008 à 15:33
Merci pour ton aide, je vais essayer de voir pour les DoEvents, sinon je vois pas comment je pourrais simplifier plus mon programme, parce que je ne vois plus que cette solution, la profusion de boucle le fais ralentir à force. Pourtant j'essaye au mieux de raccourcir ces boucles....
Mais merci quand même pour ton aide, je vais éssayé maintenant de trouvé une solution, sinon ce sera le redémarrage du programme à intervalles régulier...
Bonne continuation
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
6 juin 2008 à 23:52
Bonsoir,


Comme déjà dit, DoEvents permet "de redonner la main" aux autres programmes externes en cours. En principe, cela est utile pour éviter de tout figer durant l'exécution de ton programme. Le "mieux" étant d'éviter de les mettre dans une boucle, mais peut-être difficile dans ton cas.


Ensuite, si la quantité de mémoire utilisée augmente, cela ne doit pas être les boucles (ou directement les boucles)... Y a-t-il une mise en mémoire d'un tableau indicé ? (Redim Tab(t) as ...)
Le temps d'attente, quant à lui, est probablement le résultat des boucles qui ont l'air d'augmenter... Est-ce que les bornes sont modifiées au fur et à mesure ?
ex :
for b1=1 to 10000
for b2=1 to b1 ... etc
cette structure devient vite pénalisante...

Autre chose de bien, comme déjà dit, c'est l'emploi de Option Explicit, mais reste à donner un type de variable adapté... Pour les boucles dans la mesure où cela ne pose pas de problème, choisir des type LONG.
ex :
Dim b1 as Long, b2 as Long ... etc

Il reste que sans code, comme le dit NHenry, difficile d'en dire plus...

Amicalement,
Us.
0
bonjourcheval Messages postés 228 Date d'inscription mercredi 13 décembre 2000 Statut Membre Dernière intervention 8 août 2011
13 juin 2008 à 18:19
De plus, pour toutes tes traitements de chaines :

si tu concatènes des 3 chaînes,

strA = StrA & strB & strC

Utilise plutôt

strA = StrA & (strB & strC)

C'est plus rapide, car il recopie la chaine A selement 1 fois à la place de 2

Aussi, utilise les fonctions de chaînes tel mid$, left$,etc tu vas sauver un peu de temps

Il y a un guide là dessus sur internet.
http://www.aivosto.com/vbtips/stringopt.html

Il m'a bien aider! J'espère qu'il t'aidera aussi =)
0
Rejoignez-nous