Quel est le moyen le plus efficace de concaténer les chaînes?
Réponses
Trop de publicités?Rico Mariani, l' .Performance NETTE gourou, avait un article sur ce sujet. Ce n'est pas aussi simple qu'on pourrait le soupçonner. Le conseil de base est ceci:
Si votre motif ressemble:
x = f1(...) + f2(...) + f3(...) + f4(...)
c'est un concat et c'est zippy, StringBuilder ne sera probablement pas aider.
Si votre motif ressemble:
if (...) x += f1(...)
if (...) x += f2(...)
if (...) x += f3(...)
if (...) x += f4(...)
alors, vous voulez probablement StringBuilder.
La méthode StringBuilder.Append()
est beaucoup mieux que l'utilisation de l'opérateur +. Mais j'ai trouvé que, lorsque les concaténations sont inférieures à 1000, String.Join()
est encore plus efficace que StringBuilder
.
StringBuilder sb = new StringBuilder();
sb.Append(someString);
Le seul problème avec String.Join
est que vous devez concaténer les chaînes avec un délimiteur commun.
string key = String.Join("_", new String[]
{ "Customers_Contacts", customerID, database, SessionID });
Il existe 5 types de concaténations de chaîne:
- à l'aide de plus (
+
) symbole. - à l'aide de
string.Concat()
. - à l'aide de
string.Format()
. - à l'aide de
string.Append()
. - à l'aide de
stringBuilder
.
Dans une expérience, il a été prouvé que l' string.Concat()
est la meilleure façon de l'aborder si les cordes sont moins de 1000(environ) et si les cordes sont plus de 1000 alors stringBuilder
doit être utilisé.
Pour plus d'informations, consultez ce site.
De Chinh Faire - StringBuilder n'est pas toujours plus rapide:
Règles de base
Lors de la concaténation de trois dynamiques de la chaîne de valeurs ou moins, de l'utilisation traditionnelle de concaténation de chaîne.
Lors de la concaténation de plus de trois dynamiques de la chaîne de valeurs, utiliser StringBuilder.
Lors de la construction d'une chaîne de caractères à partir de plusieurs littéraux de chaîne, utilisez le @ littéral de chaîne ou de la ligne opérateur+.
La plupart du temps StringBuilder est votre meilleur pari, mais il y a des cas, comme indiqué dans ce post que vous devriez au moins penser à chaque situation.
Si vous fonctionnez dans une boucle, StringBuilder est probablement la voie à suivre ; il vous permet d’économiser les frais généraux de la création de nouvelles chaînes régulièrement. Dans le code, qui courra seulement une fois, cependant, String.Concat est probablement très bien.
Cependant, Rico Mariani (gourou d’optimisation .NET) composée d’un questionnaire dans lequel il déclarait à la fin que, dans la plupart des cas, il recommande String.Format.