2 méthodes de concaténation de texte

Description

Encore une source qui n'est pas de moi mais qui, j'en suis convaincu, mérite d'être connue...

Habituellement lorsqu'on concatène deux chaines, on utilise la méthode MaChaine = MonPremierMorceau & MonSecondMorceau.

En relisant mes revues "Programmez!", Xavier LECLERCQ proposait une seconde méthode beaucoup plus rapide... Voyez le screenshot pour comparer les temps mis pour la réalisation de 1000 à 5000 concaténations dans chacune des méthodes.

Je vous met ci-dessous l'extrait de l'article en question qui explique la démarche adoptée.

Source / Exemple :


'$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
'Extrait de l'article consacré à l'optimisation du code en VB
'paru dans le mensuel "Programmez!" en novembre 2000 (mensuel n°26)
'et écrit par Xavier LECLERCQ.
'------------------------------------------------------------------------------
'
'Soit deux chaînes de caractères:
'   CH1 = "Méthode standard"
'   CH2 = " de concaténation."
'
'Par concaténation standard, cela donne :
'   CH1 = CH1 & CH2
'   soit CH1 = "Méhode de concaténation standard."
'
'Que fait VB pour réaliser cette opération ?
'   1.  Il alloue une plage mémoire temporaire qui contiendra le résultat;
'   2.  Il copie CH1 au début de cette plage;
'   3.  Il copie CH2 à la fin de cette plage;
'   4.  Il libère la plage mémoire CH1 d'origine;
'   5.  Il alloue la plage mémoire définitive qui contiendra le résultat;
'   6.  Il copie la zone temporaire vers cette plage mémoire définitive.
'
'Il y a beaucoup plus simple en VB !
'
'Soit nos deux chaines de caractères:
'   CH1 = "Méthode standard"
'   CH2 = " de concaténation."
'
'   1.  L1 = Len(CH1)
'   2.  L2 = Len(CH2)
'   3.  CH1 = CH1 & Space(L2)       'Pour une allocation mémoire très rapide
'   4.  Mid(CH1, L1, L2) = CH2      'Copie
'       Remarque personnelle :  c'est l'instruction MID qui est utilisée
'                               et non la fonction... Voir MSDN
'
'Ce qui donne:
'
'   Dim CH1, CH2 As String
'
'   CH1 = "Méthode standard"
'   CH2 = " de concaténation."
'
'   L1 = Len(CH1)
'   L2 = Len(CH2)
'   CH1 = CH1 & Space(L2)
'   Mid(CH1, L1, L2) = CH2
'
'   MsgBox CH1
'

Codes Sources

A voir également

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.