就性能而言,VB.NET XML文本与StringBuilder

就性能而言,VB.NET XML文本与StringBuilder,vb.net,performance,stringbuilder,xml-literals,Vb.net,Performance,Stringbuilder,Xml Literals,我有很多关于StringBuilder的VB代码。我正在考虑将它们改为XML Literals,关于性能,它比StringBuilder快吗?还是慢一点 这是XML文本的一个示例: Dim bookString = <bookstore xmlns="http://examples.books.com"> <book publicationdate=<%= publicationdate %> ISBN=<%= i

我有很多关于StringBuilder的VB代码。我正在考虑将它们改为XML Literals,关于性能,它比StringBuilder快吗?还是慢一点

这是XML文本的一个示例:

Dim bookString = <bookstore xmlns="http://examples.books.com">
                       <book publicationdate=<%= publicationdate %> ISBN=<%= isbn %>>
                           <title>ASP.NET Book</title>
                           <price><%= price %></price>
                           <author>
                               <first-name><%= a.FirstName %></first-name>
                               <last-name><%= a.LastName %></last-name>
                           </author>
                       </book>
                   </bookstore>.Value
Dim bookString=
ASP.NET图书
价值
这是使用StringBuilder的一个示例:

Dim stringBuilder = new StringBuilder()

stringBuilder.Append("<bookstore xmlns="http://examples.books.com">")
stringBuilder.Append("<book publicationdate=<%= publicationdate %> ISBN=<%= isbn %>>")
stringBuilder.Append("<title>ASP.NET Book</title>")
stringBuilder.Append("<price><%= price %></price>")
stringBuilder.Append("<author>")
stringBuilder.Append("<first-name><%= a.FirstName %></first-name>")
stringBuilder.Append("<last-name><%= a.LastName %></last-name>")
stringBuilder.Append("</author>")
stringBuilder.Append("</book>")
stringBuilder.Append("</bookstore>")

Dim bookString = stringBuilder.toString()
Dim stringBuilder=新stringBuilder()
stringBuilder.Append(“”)
stringBuilder.Append(“”)
stringBuilder.Append(“ASP.NET图书”)
stringBuilder.Append(“”)
stringBuilder.Append(“”)
stringBuilder.Append(“”)
stringBuilder.Append(“”)
stringBuilder.Append(“”)
stringBuilder.Append(“”)
stringBuilder.Append(“”)
Dim bookString=stringBuilder.toString()

您应该简单地使用XML文本来确保您的代码是正确的。
如果使用
StringBuilder
,很可能会忘记转义某些内容并生成无效的XML

XML文本可能比纯字符串慢一点,但不会有太大区别

如果您正在处理大量文件,则应使用直接写入磁盘或网络的
XmlWriter
;这应该比任何一个都快


请注意,在您的特定示例中,普通字符串连接将比StringBuilder更快。(因为您没有使用任何循环)

从纯性能的角度来看,最好的选择是测试两个备选方案。除了已经提到的其他选项之外,您还可以考虑XFruting元素来组合Xml Literals的类型安全性(与字符串级联/字符串生成器相比)以及输出流限制内存开销。有关XStreamingElement的信息,请参阅。

为什么说普通字符串连接比字符串生成器更快。诚然,对于这样一个小的字符串,它不会有太大的不同,但是,每个字符串串联都会分配一个全新的字符串对象和它自己的内部字符数组。但是,我认为StringBuilder的Append方法只会偶尔重新分配内部数组,这就是为什么建议这样做的原因。我不明白有或没有循环是如何改变这一点的。@SteveDog:错了。像
“a”+“b”+someVar+“c”
这样的表达式被编译成
String.Concat(“ab”,someVar”,“c”)