我使用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()
答案 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。