我用StringBuilder有很多VB代碼。我正在考慮將它們更改爲XML Litterals,關於性能是否比StringBuilder更快?或者它更慢?性能方面的VB.NET 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()
爲什麼你說普通字符串連接會比字符串生成器快。當然,對於這樣一個小字符串,它不會有太大的不同,但是,每個字符串連接都會爲它自己的內部字符數組分配一個全新的字符串對象。但是,我認爲StringBuilder的Append方法偶爾會重新分配內部數組,這就是爲什麼它被推薦。我不明白有或沒有循環改變了這一點。 –
@SteveDog:錯了。像'「a」+「b」+ someVar +「c」'這樣的表達式被編譯爲'String.Concat(「ab」,someVar「,」c「)'。 – SLaks
有意思。 –