Proger
Messages postés248Date d'inscriptionvendredi 10 novembre 2000StatutMembreDernière intervention19 décembre 2008
-
19 mars 2003 à 16:58
Silmon
Messages postés85Date d'inscriptionmardi 6 janvier 2004StatutMembreDernière intervention 7 mai 2007
-
24 févr. 2005 à 16:56
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Silmon
Messages postés85Date d'inscriptionmardi 6 janvier 2004StatutMembreDernière intervention 7 mai 2007 24 févr. 2005 à 16:56
Je suis tombé dessus par hazard!
J'aimerai bien savoir quand est-il des remarques deposées il y a presque 2 ans.
Ça m'interesserait...
fluminis
Messages postés73Date d'inscriptiondimanche 5 janvier 2003StatutMembreDernière intervention20 juin 2005 10 mai 2003 à 23:06
je dois etre con mais :
je me demandais un truc. Le but de cette methode est de ne pas faire de concatenation a l'aide du symbole &.
or je vois la ligne :
BigStr = BigStr & Space$(L)
donc on retombe dans l'emploi de la methode standard !?!?
c'est quoi la difference entre :
CH1 = CH1 & CH2
et :
CH1 = CH1 & Space(L2)
le caractere & n'a pas la meme fonction dans les deux cas ou quoi ?
Proger
Messages postés248Date d'inscriptionvendredi 10 novembre 2000StatutMembreDernière intervention19 décembre 2008 21 mars 2003 à 11:14
Bon, bien, en plaçant dans un cas concret l'instruction mid$() est clairement plus rapide.
cas concret : bigstr est de longueur constante, donc pas besoin de perdre du temps machine avec un bigstr & space$(valeur), là tout de suite on sent la différence entre entre un
bigstr = bigstr & chr$(toto)
et un
mid$(bigstr,i,1) = chr$(toto)
Bref, mid$() doit être utilisé pour les concaténations de chaines à taille constante, à l'instar de "&"
Pour les chaines à longueur variable, l'appel à space$() pour l'allocation"rapide" de mémoire bouffe tt les performances.
Proger
Messages postés248Date d'inscriptionvendredi 10 novembre 2000StatutMembreDernière intervention19 décembre 2008 19 mars 2003 à 16:58
Le sub de test fourni dans l'exemple est déloyale !
pourquoi le teste du truc "&" basique du VB est autonome alors que celui de mid$() dépend de ccOffset et ccIncrement , qui sont des variable public Long ?
lorsque on réécrit la fonction de test du Mid$, pour qu'il ne dépende plus de ces 2 variables globales (de façon à faire un Function() autonome), on obtient :
(I, L, LD type Long)
For I = 1 To LoopCount
LD = Len(BigStr)
L = Len(ConcatStr)
BigStr = BigStr & Space$(L)
Mid$(BigStr, LD, L) = ConcatStr
Next I
et les performances deviennent absolument identique ...
En résumé, il est intéressant d'utiliser les concaténations via Mid$() dans des cas bien préçis, càd lorsque l'on connait à l'avance les tailles des variables, ou encore lorsque on peut utiliser des variables globales pour travailler sur 1 variable. Le reste du temps, elles sont équivalente.
Nota : j'ai l'impression de dire une connerie, y'a peut-être un "truc" ... et que vient faire left$() dans l'histoire ? c'est louche
24 févr. 2005 à 16:56
J'aimerai bien savoir quand est-il des remarques deposées il y a presque 2 ans.
Ça m'interesserait...
10 mai 2003 à 23:06
je me demandais un truc. Le but de cette methode est de ne pas faire de concatenation a l'aide du symbole &.
or je vois la ligne :
BigStr = BigStr & Space$(L)
donc on retombe dans l'emploi de la methode standard !?!?
c'est quoi la difference entre :
CH1 = CH1 & CH2
et :
CH1 = CH1 & Space(L2)
le caractere & n'a pas la meme fonction dans les deux cas ou quoi ?
21 mars 2003 à 11:14
cas concret : bigstr est de longueur constante, donc pas besoin de perdre du temps machine avec un bigstr & space$(valeur), là tout de suite on sent la différence entre entre un
bigstr = bigstr & chr$(toto)
et un
mid$(bigstr,i,1) = chr$(toto)
Bref, mid$() doit être utilisé pour les concaténations de chaines à taille constante, à l'instar de "&"
Pour les chaines à longueur variable, l'appel à space$() pour l'allocation"rapide" de mémoire bouffe tt les performances.
19 mars 2003 à 16:58
pourquoi le teste du truc "&" basique du VB est autonome alors que celui de mid$() dépend de ccOffset et ccIncrement , qui sont des variable public Long ?
lorsque on réécrit la fonction de test du Mid$, pour qu'il ne dépende plus de ces 2 variables globales (de façon à faire un Function() autonome), on obtient :
(I, L, LD type Long)
For I = 1 To LoopCount
LD = Len(BigStr)
L = Len(ConcatStr)
BigStr = BigStr & Space$(L)
Mid$(BigStr, LD, L) = ConcatStr
Next I
et les performances deviennent absolument identique ...
En résumé, il est intéressant d'utiliser les concaténations via Mid$() dans des cas bien préçis, càd lorsque l'on connait à l'avance les tailles des variables, ou encore lorsque on peut utiliser des variables globales pour travailler sur 1 variable. Le reste du temps, elles sont équivalente.
Nota : j'ai l'impression de dire une connerie, y'a peut-être un "truc" ... et que vient faire left$() dans l'histoire ? c'est louche