huuuuu21
Messages postés30Date d'inscriptionmercredi 24 septembre 2003StatutMembreDernière intervention 8 septembre 2009 18 nov. 2003 à 16:31
Salut,
Et comment on fait en vb .net, pour rechercher un charactère qui se trouve dans un fichier texte, et non dans un texte box .
cimer les gars.
Proger
Messages postés248Date d'inscriptionvendredi 10 novembre 2000StatutMembreDernière intervention19 décembre 2008 6 sept. 2003 à 10:00
Fallait s'attendre à ce genre de résultat puisque entre appeler 1 fois la fonction instr() (__vbaInStr) et n fois la fonction mid() (__vbaMidStmtVar) bon ben rien que l'appel à cet api on perd du temps!
Avis à ceux qui veulent faire d'autres comparaisons :
Comme protocole de test il faut tester sous l'IDE (sous vb) et également lorsque le code est compilé, avec une priorité temps réel.
Ensuite l'api gettickcount n'as qu'une préçision de 1/1000ème de secondes, utiliser de préférence les api dans cette source : http://www.vbfrance.com/article.aspx?Val=6532 Et pour finir, ce genre de test ça ferai plus parti de la rubrique Optimisation, non ? :)
sebmafate
Messages postés4936Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention14 février 201437 6 sept. 2003 à 07:34
juste une remarque, il faut utilser mid$ à la place de mid, ce sera encore plus rapide :)
pcpunch
Messages postés1243Date d'inscriptionmardi 7 mai 2002StatutMembreDernière intervention18 février 20195 5 sept. 2003 à 19:49
Dsl Renfield , je rectifierai le tir lol merci qd mm pour tes commentaires j'optimiserai la recherche avec mid prochainement!!!
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 5 sept. 2003 à 10:07
d'autre part, je viens de jeter un oeil sur le code, il est pas indenté (passons l'orthographe, ca arrive a tout le monde !)
d'autres part, tu fausse la donne, car ta boucle avec mid est assez bancale !!
donc c'est ton algo qui est a mettre en cause, et non la fonctio mid !!
tu devrais utiliser des variables intermediaires, plustot que de réévaluer sans cesse Text1.text, text3.text et len ( text3.text) :
---------------------------------------
Dim L As Long,W As String, T As String
W = Text3.Text
L = Len(Text3.Text)
T = Text1.Text
For i = 1 To Len(Text1)
If Mid(T, i, L) = W Then Exit For
Next i
---------------------------------------------
chez moi, je gagne pas mal de temps :
.50 s -> .01 sec
----------------------------------------------
dans ta boucle de chargement, tu fais trop de Refresh , ca met 2 plombes a charger des fichiers consequents (et ca clignotte !)
si un motif n'est pas trouvé, tu n'affiche pas d'erreurs.
tu sera de plus gentil de bien vouloir respecter les sauts de ligne, c'est visuellement plus simple !!
----------------------------------------
et surtout, chez moi, ca coince quelques peu !!
le code trouvé doit bien être selectionné !! et bien il faut enlever
Text1.SelStart = 1
car sinon ca marche moins bien !!
enfin, bref, si c'est pour faire une source didactique, essaie d'etre coherent, et d'eviter ce genre de choses !
loin de moi l'idée de casser pour casser, j'ai pas aimé certaines choses flagrantes dans ton code !
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 5 sept. 2003 à 09:45
c'est assez bête, je trouve, car instr effectue des recherches dans du texte, et non mid !!
c'est logique de penser que c'est plus rapide d'utiliser instr, que de regarder chaque caractere avec mid !!
18 nov. 2003 à 16:31
Et comment on fait en vb .net, pour rechercher un charactère qui se trouve dans un fichier texte, et non dans un texte box .
cimer les gars.
6 sept. 2003 à 10:00
Avis à ceux qui veulent faire d'autres comparaisons :
Comme protocole de test il faut tester sous l'IDE (sous vb) et également lorsque le code est compilé, avec une priorité temps réel.
Ensuite l'api gettickcount n'as qu'une préçision de 1/1000ème de secondes, utiliser de préférence les api dans cette source : http://www.vbfrance.com/article.aspx?Val=6532
Et pour finir, ce genre de test ça ferai plus parti de la rubrique Optimisation, non ? :)
6 sept. 2003 à 07:34
5 sept. 2003 à 19:49
5 sept. 2003 à 10:07
d'autres part, tu fausse la donne, car ta boucle avec mid est assez bancale !!
donc c'est ton algo qui est a mettre en cause, et non la fonctio mid !!
tu devrais utiliser des variables intermediaires, plustot que de réévaluer sans cesse Text1.text, text3.text et len ( text3.text) :
---------------------------------------
Dim L As Long,W As String, T As String
W = Text3.Text
L = Len(Text3.Text)
T = Text1.Text
For i = 1 To Len(Text1)
If Mid(T, i, L) = W Then Exit For
Next i
---------------------------------------------
chez moi, je gagne pas mal de temps :
.50 s -> .01 sec
----------------------------------------------
dans ta boucle de chargement, tu fais trop de Refresh , ca met 2 plombes a charger des fichiers consequents (et ca clignotte !)
si un motif n'est pas trouvé, tu n'affiche pas d'erreurs.
tu sera de plus gentil de bien vouloir respecter les sauts de ligne, c'est visuellement plus simple !!
----------------------------------------
et surtout, chez moi, ca coince quelques peu !!
le code trouvé doit bien être selectionné !! et bien il faut enlever
Text1.SelStart = 1
car sinon ca marche moins bien !!
enfin, bref, si c'est pour faire une source didactique, essaie d'etre coherent, et d'eviter ce genre de choses !
loin de moi l'idée de casser pour casser, j'ai pas aimé certaines choses flagrantes dans ton code !
5 sept. 2003 à 09:45
c'est logique de penser que c'est plus rapide d'utiliser instr, que de regarder chaque caractere avec mid !!