J'ai trouvé cette fonction dans le forum Bigsource. Comme je n'ai pas trouvé d'équivalent si rapide sur VBFrance, j'ai du alors fabriquer cette feuille pour le test que s'assevère positif.
jjDai
Messages postés291Date d'inscriptionvendredi 21 février 2003StatutMembreDernière intervention13 mars 2015 9 févr. 2010 à 20:46
Si effectivement dans certains contextes cette fonction s'avère plus rapide dans d'autres elle l'est moins, et au finale je ne suis pas convaincu car la plus part du temps il suffit de revoir algorithmie principale notamment la construction des boucles.
Un test avec
c = Replace(c, "co", "mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm", 1, , 1)
c = Replace(c, "mm", "ttttttttttttttttttttttttttttttttttttttttttttt", 1, , 1)
c = Replace(c, "tt", "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", 1, , 1)
c = Replace(c, "bb", "zzzzzzZZZzzzzzzzzzzzzzzzzzzZZZZZZzzzz", 1, , 1)
c = Replace(c, "zz", "oooooooooooooooooooooooooooo", 1, , 1)
c = Replace(c, "zzzzz", "visual basic", 1, , 1)
S'avère presque équivalent sur mon poste.
Cependant très bonne source pour les version antérieures de VB et VBA qui n'implémente pas cette fonction.
JJDAI
vicosta
Messages postés178Date d'inscriptionlundi 5 juin 2006StatutMembreDernière intervention30 novembre 2011 9 févr. 2010 à 21:34
Sur mon poste et avec l'exemple de code que tu décris, ça va plus de 10 fois plus vite.
Bien sûr que, si le project ne comporte pas beaucoup de remplacements à éffectuer, cette function sera superflue.
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 10 févr. 2010 à 15:15
Il y a un certain nombre de code sur REPLACE sur VBF... (et j'en parle pas sur internet). As-tu fait le test du plus rapide au moins ? Simple curiosité...
Amicalement,
Us.
vicosta
Messages postés178Date d'inscriptionlundi 5 juin 2006StatutMembreDernière intervention30 novembre 2011 11 févr. 2010 à 02:43
Pas besoin de tester les autres codes sur vbfrance, j'ai consulté une bonne dizainne parmi le plus récents et aucun, tel que VB, ne reserve de la mémoire addctionnel pour travailler confortablement sans trop embarasser le système d'exploitation.
cs_Norpac
Messages postés12Date d'inscriptionjeudi 27 décembre 2007StatutMembreDernière intervention21 janvier 2013 21 févr. 2010 à 11:34
L'instruction :
ReDim Preserve alHits(0 To lSize) As Long
prend environ 40 % du temps d'exécution. Pourquoi ne pas calculer la taille de ce tableau au préalable et n'effectuer le dimensionnement qu'une seule fois. Cela oblige à dupliquer quelques instructions mais s'avère payant. J'arrive à un rapport de 300 ms pour 16000 ms sur le même exemple.
Toujours impressionné par le travail de passionnés anonymes.
9 févr. 2010 à 20:46
Un test avec
c = Replace(c, "co", "mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm", 1, , 1)
c = Replace(c, "mm", "ttttttttttttttttttttttttttttttttttttttttttttt", 1, , 1)
c = Replace(c, "tt", "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", 1, , 1)
c = Replace(c, "bb", "zzzzzzZZZzzzzzzzzzzzzzzzzzzZZZZZZzzzz", 1, , 1)
c = Replace(c, "zz", "oooooooooooooooooooooooooooo", 1, , 1)
c = Replace(c, "zzzzz", "visual basic", 1, , 1)
S'avère presque équivalent sur mon poste.
Cependant très bonne source pour les version antérieures de VB et VBA qui n'implémente pas cette fonction.
JJDAI
9 févr. 2010 à 21:34
Bien sûr que, si le project ne comporte pas beaucoup de remplacements à éffectuer, cette function sera superflue.
10 févr. 2010 à 15:15
Amicalement,
Us.
11 févr. 2010 à 02:43
21 févr. 2010 à 11:34
ReDim Preserve alHits(0 To lSize) As Long
prend environ 40 % du temps d'exécution. Pourquoi ne pas calculer la taille de ce tableau au préalable et n'effectuer le dimensionnement qu'une seule fois. Cela oblige à dupliquer quelques instructions mais s'avère payant. J'arrive à un rapport de 300 ms pour 16000 ms sur le même exemple.
Toujours impressionné par le travail de passionnés anonymes.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.