Ralentissement lecture tableau

yostone Messages postés 30 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 13 septembre 2012 - 2 janv. 2012 à 16:26
yostone Messages postés 30 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 13 septembre 2012 - 4 janv. 2012 à 10:25
Bonjour, je bosse sur une appli en vb6 pour une machine d'usinage et dans
une picturebox je dessine ma pièce qui s'usine en temps réel avec un outil.
J'enregistre les points de déplacement de mon outil dans un tableau en créant
une nouvelle ligne a chaque fois puis je redessine en boucle mon griniotage de pièces, vous me suivez ?
Arrivé a une 5000 eme de ligne j'ai mon processeur qui mouline et mon appli
s'accade... (normal vue que je boucle sur 5000 lignes)
J'aimerai savoir si vous avez une idée ne pas faire ramer mon appli ?
(sans changer ma config math hein :( )

Merci.

16 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
2 janv. 2012 à 17:00
tableau dynamique, ajout d'une case ... a chaque fois ?
pas bon, ca

alloue un bloc de 2000 lignes, par exemple, joues dedans
arrivé au bout des 2000 lignes, ajoutes en, ainsi de suite

sinon, a chaque nouvelle case, le tableau entier et déplacé en mémoire...

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
2 janv. 2012 à 17:20
Salut

Oui, ajoute une centaines de lignes d'avance dès que le UBound est atteint.
Sinon, autre méthode, utilise une collection = plus rapide en ajout, par contre, plus lent en suppression.

Vala
Jack, MVP VB
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
yostone Messages postés 30 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 13 septembre 2012
3 janv. 2012 à 08:03
Merci pour vos réponses, je vais essayer de faire comme ça.
Vous pensez que même avec 10 000 ou 20 000 ligne ça ne va pas ramer ?
Au jour d'aujourd'hui vers 5 000 lignes j'ai mon processeur qui tourne
a 80 % juste pour l'appli...
0
yostone Messages postés 30 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 13 septembre 2012
3 janv. 2012 à 10:10
Je viens de tester votre idée, je pars sur un tableau de 1000 lignes puis
arrivé à 900 lignes de plus j'ajoute 1000 lignes supplémentaire.
J'ai l'air un petit peu plus rapide mais j'ai toujours mon souci de ralentissement du faite que je redessine point par point en boucle toutes
les lignes donc mon processeur arrive a saturation vers 5000 lignes :(

Je ne sais pas comment m'en sortir... une idée ?

Merci d'avance ;-)
0

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

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
3 janv. 2012 à 10:25
après, on a réglé le coté jeu mémoire

a voir ton algo et cette utilité de tout redessiner..

pourquoi ne pas dessiner que ce qui a changé ?

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
3 janv. 2012 à 10:32
Mémoriser autant de donnée en mémoire est peut-être une mauvaise idée.
Si tu venais à dépasser la quantité de mémoire vive disponible, le système commencerait à utiliser un fichier de swap et là, les performances commenceraient sérieusement à se dégrader.

Tableau de quel type ? String, Long ?
Après un traitement complet, quelle est la taille en octets des données ainsi mémorisées ?
L'utilisation d'une base de données simple ou d'un fichier (texte ou séquentiel selon le type de données) serait peut être plus efficace pour palier à ce problème de mémoire.

Ta boucle utilise beaucoup de données, mais est-elle complexe ?
Si ce n'est pas indiscret, peux-tu nous montrer cette boucle ?
Voir si une optimisation est nécessaire.
Par exemple, si à chaque tour de calcul du affiches une donnée, tu peux, peut-être, sauter l'affichage d'une donnée sur deux ou sur dix.
0
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
3 janv. 2012 à 10:36
As-tu surveiller le gestionnaire de tâches de Windows pendant ta boucle ?
Onglet performances, mémoire physique, disponible
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 228
3 janv. 2012 à 10:38
Bonjour,
Ce qu'exprime Renfield
pourquoi ne pas dessiner que ce qui a changé

me parait la sagesse même.
Et ce d'autant que l'image résultante résulte apparemment de "rognages" successifs.
Je me demande même, à ce propos, si ces "rognages" successifs ne se font pas de manière régulière, ce qui devrait permettre une toute autre stratégie que celle mise en oeuvre.
Mais bon ... nous ignorons pour l'instant à peu près tout du mécanisme pensé, sauf ce qui en est dit de manière non détaillée.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
CGSI3 Messages postés 416 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 7 janvier 2018 1
3 janv. 2012 à 10:41
Bonjour a tous,
Pour donner de l'air au processeur tu utilise les fonctionnalité de la carte graphique avec OpenGl ou DirectX ?
Dans ce domaine il y a aussi pas mal de chose a regarder.
CGSI3
0
yostone Messages postés 30 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 13 septembre 2012
3 janv. 2012 à 10:58
Alors je vais être plus clair, pour commencer (et je ne jete la pierre
sur personne) la fonction de rognage de brut a été développer par mon successeur.
Cette fonction je ne la touche jamais et je ne la regarde jamais non plus.
Sur l'appli c'est vraiment le plus gros des défauts remonté par les utilisateurs...
Depuis la rentrée (donc hier) je me suis pencher sur la fonction pour trouver un palliatif.
Depuis le début j'ai dans l'idée de ne pas tout redessiner car je trouve ça
complètement inutile mais pour le moment j'explore le code avec vos conseils.

Alors pour en dire plus :

j'ai un tableau avec 10 colonnes ou je stock les infos sur mon outils
quand je déplace mon outil j’incrémente une ligne en sauvegardant les
points X et Y.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 228
3 janv. 2012 à 11:02
Comment se présente ton outil virtuel de rognage (pas la fonction, mais l'outil lui-même) ?
Comment "oeuvre"-t-il virtuellement ? par translation régulière ?


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
yostone Messages postés 30 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 13 septembre 2012
3 janv. 2012 à 11:08
Voici une impr écran...

Quand l'outil avance (en jaune) l'appli color la couleur gris en bleu...
Pour avoir l'impression de rogner la pièce...

Le souci je pense c'est qu'a chaque fois que j'avance je redessine toute
l'image même les traits d'axes etc...
0
yostone Messages postés 30 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 13 septembre 2012
3 janv. 2012 à 11:54
Si je fais un step de 2 dans ma boucle, ça accélère la lecture ou pas ?
0
yostone Messages postés 30 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 13 septembre 2012
3 janv. 2012 à 16:26
J'ai fais un step de 10 a partir de 2000 lignes sur une plage de 1500 lignes avant la ligne en cours se qui me permet d'avoir une boucle plus rapide et pour le moment je n'ai plus de problèmes de rapidités.
Merci à vous ;-)
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
4 janv. 2012 à 08:07
a voir si le rendu est correct.

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
yostone Messages postés 30 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 13 septembre 2012
4 janv. 2012 à 10:25
Le rendu est plutôt bien amélioré mais je me demande si je ne devrais pas refaire le graphique avec de l'openGL ?? vous en pensez quoi ?
Je pourrais avoir le même style de fonction en openGL ?
c'est à dire une pièce dessinée point par point avec un outil
qui vient grignoter la pièce ?
(la pièce et l'outil sont à l’échelle)

Merci :)
0