2

StringBuilder を使用した VB コードがたくさんあります。それらを XML リテラルに変更することを検討しています。パフォーマンスに関しては、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

これは 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()
4

2 に答える 2

4

コードが正しいことを確認するためだけに、XML リテラルを使用する必要があります。
を使用するStringBuilderと、何かをエスケープするのを忘れて、無効な XML を生成する可能性が非常に高くなります。

XML リテラルは、おそらく純粋な文字列よりも少し遅くなりますが、大きな違いはありません。

巨大なファイルを扱っている場合は、XmlWriterディスクまたはネットワークに直接書き込む を使用する必要があります。それはどちらよりも速いはずです。

特定の例では、通常の文字列連結は StringBuilder よりも高速であることに注意してください。(ループを使用していないため)

于 2012-08-28T14:57:15.747 に答える
2

純粋なパフォーマンスの観点から、最良のオプションは両方の選択肢をテストすることです。前述の他のオプションに加えて、XStreamingElement を考慮して、(文字列連結/文字列ビルダーと比較して) Xml リテラルの型安全性と出力ストリーミングを組み合わせて、メモリ オーバーヘッドを制限することを検討してください。XStreamingElement については、 http: //msdn.microsoft.com/en-us/library/system.xml.linq.xstreamingelement.aspxを参照してください。

于 2012-08-28T17:49:10.067 に答える