String.Format
utilise un StringBuilder
en interne:
public static string Format(IFormatProvider provider, string format, params object[] args)
{
if ((format == null) || (args == null))
{
throw new ArgumentNullException((format == null) ? "format" : "args");
}
StringBuilder builder = new StringBuilder(format.Length + (args.Length * 8));
builder.AppendFormat(provider, format, args);
return builder.ToString();
}
Le code ci-dessus est un extrait de mscorlib, donc la question est "est - StringBuilder.Append()
plus rapide que l' StringBuilder.AppendFormat()
"?
Sans benchmarking, je dirais probablement que l'exemple de code ci-dessus s'exécuter plus rapidement en utilisant .Append()
. Mais c'est une supposition, essayez d'analyse comparative et/ou de profilage les deux pour en faire une véritable comparaison.
Ce chap, Jerry Dixon, fait un peu de benchmarking:
http://jdixon.dotnetdevelopersjournal.com/string_concatenation_stringbuilder_and_stringformat.htm
Mise à jour:
Malheureusement le lien ci-dessus est décédé depuis. Toutefois, il y a toujours une copie sur le Chemin du Retour de la Machine:
http://web.archive.org/web/20090417100252/http://jdixon.dotnetdevelopersjournal.com/string_concatenation_stringbuilder_and_stringformat.htm
À la fin de la journée cela dépend si votre chaîne de formatage va être appelée de façon répétitive, c'est à dire, vous faites des graves de traitement de texte de plus de 100 méga-octets de texte, ou s'il est appelé lorsque l'utilisateur clique sur un bouton maintenant et encore. Sauf si vous êtes en train de faire un énorme lot de traitement d'emploi que j'ai coller avec de la Ficelle.Format, il contribue à la lisibilité du code. Si vous soupçonnez une perf goulot d'étranglement puis coller un profiler sur votre code et de voir où il est vraiment.