注意: 此答案是在.NET 2.0是当前版本时编写的。这可能不再适用于更高版本。
String.Format``StringBuilder内部使用:
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();}上面的代码是mscorlib的摘录,因此问题变成“
StringBuilder.Append()比
StringBuilder.AppendFormat()” 更快?
如果没有基准测试,我可能会说,使用可以使上述代码示例运行得更快
.Append()。但这是一个猜测,请尝试对这两者进行基准测试和/或性能分析以进行适当的比较。
这一章杰里·迪克森(Jerry Dixon)做了一些基准测试:
http://jdixon.dotnetdevelopersjournal.com/string_concatenation_stringbuilder_and_stringformat.htm
更新:
遗憾的是,以上链接自此消失了。但是,“返回机器”上仍然有一个副本:
http://web.archive.org/web/20090417100252/http://jdixon.dotnetdevelopersjournal.com/string_concatenation_stringbuilder_and_stringformat.htm
归根结底,这取决于是否要重复调用字符串格式,即要对100兆字节的文本进行认真的文本处理,还是当用户一次又一次单击按钮时调用它。除非您要执行大量的批处理工作,否则我将坚持使用String.Format,它有助于提高代码的可读性。如果您怀疑性能瓶颈,请在代码上粘贴探查器,然后查看其实际位置。



