Est Une Chaîne.Format aussi efficace que StringBuilder

Supposons que j'ai un stringbuilder en C# qui fait cela:

StringBuilder sb = new StringBuilder();
string cat = "cat";
sb.Append("the ").Append(cat).(" in the hat");
string s = sb.ToString();

que ce serait aussi efficace ou plus efficace que d'avoir:

string cat = "cat";
string s = String.Format("The {0} in the hat", cat);

Si oui, pourquoi?

MODIFIER

Après quelques réponses intéressantes, j'ai réalisé que je devrais probablement avoir été un peu plus clair dans ce que je leur demandais. Je n'étais pas tellement demandant qui était plus rapide lors de la concaténation d'une chaîne de caractères, mais qui est plus rapide à injection une chaîne dans une autre.

Dans les deux cas ci-dessus, je veux injecter un ou plusieurs des chaînes dans le milieu d'un modèle prédéfini de la chaîne.

Désolé pour la confusion

  • Merci de laisser ces ouverte afin de permettre à de futures améliorations.
  • Dans un cas, le moyen le plus rapide est ni l'un ni l': si la partie à remplacer est de taille égale à la nouvelle partie, vous pouvez changer la chaîne en place. Malheureusement, cela nécessite de la réflexion ou le code unsafe et délibérément enfreint l'immutabilité de la chaîne. Pas une bonne pratique, mais si la vitesse est un problème... 🙂
  • dans l'exemple donné ci-dessus string s = "The "+cat+" in the hat"; pourrait être le plus rapide, sauf si elle est utilisée dans une boucle, dans ce cas, le plus rapide sera avec un StringBuilder initialisé en dehors de la boucle.
InformationsquelleAutor lomaxx | 2008-08-09