minimarch
Messages postés31Date d'inscriptionmercredi 2 avril 2003StatutMembreDernière intervention12 février 2006
-
23 mars 2005 à 12:11
Neo.balastik
Messages postés796Date d'inscriptionjeudi 17 mai 2001StatutMembreDernière intervention 5 mai 2009
-
23 mars 2005 à 16:19
Bonjour,
je suis en train de réaliser un éditeur de langage basique. Il permettra de mettre en couleur les mots clés, les commentaires... et peut-être plus par la suite.
Ma fonction de coloration marche correctement, mais l'appelant à chaque modification de texte (même pour un simple retour à la ligne), elle fait considérablement ramer le programme sur des fichiers importants.
Pour info, j'utilise un RichTextBox et je renvoie donc le texte au format RTF.
Y a-t-il un moyen d'améliorer la rapidité du code, en jouant sur les moments où j'appelle la fonction, ou en permettant son exécution en parallèle, voire en utilisant un autre contrôle ?
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 23 mars 2005 à 15:20
Un thread est une sorte de deuxième programme lancé en paralèle de ton
programme principal. Il utilise le même espace mémoire que le programme
principal, ce qui le rend aussi rapide que ton programme principal.
L'avantage d'utiliser un thread ? Les ressources utilisées par ton prog
sont les même, mais lorsque le thread calcule, cela ne bloque pas ton
prog principal, et du coup, tu n'as plus de saccades (en théorie !).
VB n'est pas forcément orienté multi-threading, mais en passant par les
API, tu devrait pouvoir utiliser cette méthode pour améliorer la
rapidité de ton programme. par contre, je n'ai jamais programmé en
multi-threading sous VB, (ni même sous Windows !), je ne pourrais donc
pas t'aider dans cette tâche.
DarK Sidious
Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 23 mars 2005 à 14:43
Là est le problème des colorations syntaxique. Je pense que le plus
rapide et de stocker en mémoire le texte au format RTF, de le manipuler
pour mettre les couleurs là où il faut, et de ne l'appliquer qu'une
fois le calcul fait, cela évite des raffraichissement pas très propre.
Et si tu veux garder un max de rapidité pour ton prog, passe par un
nouveau thread qui ne ferais alors que la coloration syntaxique, cela
devrait éviter de faire ramer ton prog lui même.
minimarch
Messages postés31Date d'inscriptionmercredi 2 avril 2003StatutMembreDernière intervention12 février 2006 23 mars 2005 à 15:04
je stocke bien le texte RTF en memoire, et je n'applique qu'une fois le
tout fini (je ne lavais pas fait au debut et jai rapidement compris mon
erreur).
le probleme, cest que meme en faisant ca, vu que je revoi tout le texte
a chaque fois, ajouter le moindre caractere demande quelques centiemes
de secondes, c pa enorme mais ca sacade. Ceci etant dit, le probleme ne
se pose que sur les gros fichiers (mais pour linstant quelques dizaines
de lignes ca fait deja un gros fichier).
jy aie repenser, je pense que je vais essayer de trouver un moyen de ne
mettre a jour que la ligne courante. mais alors la, bonjour pour les
commentaires multilignes !!! lol
petite precision technique: qu'est ce qu'un thread ? une nouvelle fenetre ? ou module a part ?
merci pour vos reponses en tout cas.
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 23 mars 2005 à 15:04
Ben ma source de gestion du richtextbox en parle, en plus de détecter
le mot se situant sous la souris lorsque celle passe au dessus d'un
richtextbox (ou d'un textbox aussi). Mais le principe que j'utilise est
assez lent lui aussi. Le passage à un nouveau thread pour traîter ca
devrait permettre de ne pas trop ralentir le programme normalement.
DarK Sidious
Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
minimarch
Messages postés31Date d'inscriptionmercredi 2 avril 2003StatutMembreDernière intervention12 février 2006 23 mars 2005 à 15:45
hum.... je ne connaissais point. Commencant (un peu) a connaitre VB, je
pense qu'en effet il ne doit pas etre le plus adapte. mais le sujet est
interessant, je vais aller fouiller un peu voir si je trouve des choses
la dessus.
Neo.balastik
Messages postés796Date d'inscriptionjeudi 17 mai 2001StatutMembreDernière intervention 5 mai 20097 23 mars 2005 à 16:19
Pour info :
Un thread est un processus léger, résultat de la décomposition d'un processus en plusieurs entités indépendantes. Le thread est l'élement primordial lorsque l'on parle de multitâche, mais multitâche ne signifie pas multiprocessing. Un OS capable de gérer plusieurs processeurs, comme NT, 2000 ou XP peut exécuter des threads sur des processeurs différents. Un OS non capable de gérer plusieurs processeurs, comme 95 ou Me peut exécuter chaque thread en affectant cycliquement du temps CPU à chacun de ces thread.
Il est toutefois fortement déconseillé d'utiliser le multithreading en VB. Le plantage n'est jamais loin. Créer des ActiveX EXE est une façon plus adaptée de faire du multithreading en VB.