可能重复:
字符串连接与字符串生成器.性能
以下两个选项之间的任何差异(性能和内存使用情况)?
选项1:
StringBuilder msgEntry = new StringBuilder();
msgEntry.AppendLine("<" + timeTag + ">" + timeStamp + "</" + timeTag + ">");
Run Code Online (Sandbox Code Playgroud)
选项2:
StringBuilder msgEntry = new StringBuilder();
msgEntry.Append("<");
msgEntry.Append(timeTag);
msgEntry.Append(">");
msgEntry.Append(timeStamp);
msgEntry.Append("</");
msgEntry.Append(timeTag );
msgEntry.Append(">\n");
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 27
第二个在内存使用方面可能稍好一些,因为它不需要计算中间字符串1 ...但它的可读性较低,IMO.
就个人而言我会用:
msgEntry.AppendFormat("<{0}>{1}</{0}>", timeTag, timeStamp);
Run Code Online (Sandbox Code Playgroud)
你没有表现出你想要做什么StringBuilder.如果您只想将其转换为字符串,那么我将使用:
string text = string.Format("<{0}>{1}</{0}>", timeTag, timeStamp);
Run Code Online (Sandbox Code Playgroud)
首先.
性能如何?好吧,可能更糟 - 毕竟,它必须解析格式字符串.但除非你已经测量过并发现它是瓶颈,你为什么担心呢?
一般来说:
1或者要传递给的数组Concat...我们不知道它的类型,timeStamp所以我们无法确切地知道那里发生了什么; 在第二种形式中,它可以就地附加,而第一种形式可能需要将其打包,然后在执行连接之前将其转换为字符串.
.NET 3.5和.NET 4之间的重新分配等的确切实现可能已经发生了变化(我知道实现的一些部分).如果没有非常仔细的基准测试,我真的不愿意说哪个更快......但是可读性更容易调用,尽管是主观的.
| 归档时间: |
|
| 查看次数: |
424 次 |
| 最近记录: |