VB.NET XML Literals vs StringBuilder在性能方面

时间:2012-08-28 14:54:35

标签: vb.net performance stringbuilder xml-literals

我使用StringBuilder获得了很多VB代码。我考虑将它们更改为XML Litterals,对性能的关注是否比StringBuilder更快?还是它慢了?

这是XML Literals的一个例子:

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

这是使用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()

2 个答案:

答案 0 :(得分:4)

您应该使用XML文字来确保您的代码是正确的 如果您使用StringBuilder,则很可能会忘记转义并生成无效的XML。

XML文字可能比纯字符串慢一点,但它应该没什么区别。

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

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

答案 1 :(得分:2)

从纯粹的性能角度来看,最好的选择是测试两种替代方案。除了已经提到的其他选项之外,您可能还需要考虑XStreamingElement来结合Xml Literals的类型安全性(与字符串连接/字符串构建器相比)以及输出流来限制内存开销。有关XStreamingElement的信息,请参阅http://msdn.microsoft.com/en-us/library/system.xml.linq.xstreamingelement.aspx