我有一個自定義的小「視圖」引擎在T4中。基本上,它是採取與特殊指令「靜態」 HTML文件,並吐出類似:有沒有比StringBuilder更快的「參數化」字符串構建?
StringBuilder output...
output.Append("<html> my code blah");
if(MyParameter!=null){
output.Append(MyParameter.ToString);
}
output.append("more code");
return output.ToString();
當然,還有比這更給它,但是這是要點。它需要一個HTML文件並生成一個純舊的C#類。
我真的很喜歡這種方式,因爲我可以擁有靜態類型的視圖。不幸的是,這似乎有點慢。特別是我的問題是,我有一個index
視圖,多個視圖包含blog entry
視圖。因此基本上相同的基本字符串最終得到構建,只是基於提供的參數在這裏和那裏有幾個不同的文本。
無論如何,我想知道是否有任何方法來加速這個過程。有什麼比StringBuilder更快嗎?
另外,不要擔心「不潔淨」的代碼。因爲我使用T4來生成這些視圖類,所以我可以擁有一些漂亮的hack-ish代碼,並且它並不重要,因爲我基本上只寫了一次。
這很模糊,不是嗎?至少要收集一些證據,證明它實際上是緩慢的建築商。 .NET GC perf計數器告訴你什麼?分析器告訴你什麼?沒有比StringBuilder更快的速度了,使用它的Capacity屬性在.NET 4上沒有太大的區別。別的東西你沒有提到。 – 2012-07-12 10:40:46
據我所知,'StringBuilder'是推薦的有效構建字符串的方法。也許你可以使用流將文本直接發送到目的地,而不是將其構建爲字符串?也許它的T4很慢。 – 2012-07-12 11:28:31