OVH Cloud OVH Cloud

Performances

2 réponses
Avatar
jean Saint Jalmes
Bonjour,

En terme de performance et de taille du code g=E9n=E9r=E9,=20
vaut'il mieux =E9crire :

String3 =3D String1 & String2

ou :

String3 =3D String1 + String2
ou :

String3 =3D Cstr(String1 & String2)

avec :

dim String1, String2, String3 as string

Merci d'avance.

Jean

2 réponses

Avatar
Zoury
Salut Jean! :O)

dim String1, String2, String3 as string



ici String1 et String2 sont As Variant.... le type de données le plus lent
qui soit en VB.

donc en terme de performance, il vaudrait mieux écrire :
'***
Dim String1 As String, String2 As String, String3 As String
'***
et en terme de lisibilité, il vaudrait mieux écrire :
'***
Dim String1 As String ' ainsi tu
Dim String2 As String ' peux placer des commentaires
Dim String3 As String ' pour chaque variables
'***


Maintenant si on tient compte de mes déclarations (As String) :

String3 = String1 & String2
String3 = String1 + String2



c'est deux ligne sont équivalente en temps.. seulement la première syntaxe
est préférer lorsque l'on concatène des chaines ensembles afin d'éviter les
mauvaises surprises pouvant être causé par des conversions de types
implicites. Ce types d'erreur arrive fréquemment avec des déclarations de
variables comme celle que tu as postés.

Ex :
'***
Dim s1, s2 As String

s1 = 5
s2 = 3
Debug.Print s1 + s2 ' renvoit 8 -> As Integer
'***

String3 = Cstr(String1 & String2)



ici le CStr() inutile étant donnée que String1 et String2 sont déjà de type
String (avec ma déclaration), si on prend ta déclaration parcontre, on
pourrait écrire :
'***
String3 = Cstr(String1) & CStr(String2)
'***
mais l'utilisation du signe & force la conversion en String
automatiquement.. en effet si on reprend l'exemple de tantôt et on remplace
+ par & :
'***
Dim s1, s2 As String

s1 = 5
s2 = 3
Debug.Print s1 & s2 ' renvoit "54" -> As String
'***



Mais grossièrement, si on évite l'utilisation du type Variant il n'y aura
pas beaucoup de variation dans le temps d'exécution des trois syntaxes que
tu as proposés. Si tu nous donnes plus de détails sur la raison de ton
questionnement nous pourront peut-être te donner d'avantage de conseils..


--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
Avatar
Jean-Marc
"jean Saint Jalmes" a écrit dans le
message de news:273b001c46367$87676ca0$
Bonjour,
En terme de performance et de taille du code généré,
vaut'il mieux écrire :
String3 = String1 & String2
ou :
String3 = String1 + String2
ou :
String3 = Cstr(String1 & String2)
avec :



Hello,

dim String1, String2, String3 as string



Ca surement pas !

Avec
Dim String1 as String, String2 as String, String3 as String

alors ok. Sinon, String1 et String2 sont des variants

pour les performances et d'une façon générale:
String3 = String1 & String2