【发布时间】:2012-07-12 08:54:09
【问题描述】:
我有一个用 T4 制作的自定义小“视图”引擎。基本上,它所做的就是使用带有特殊指令的“静态”HTML 文件并输出如下内容:
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 性能计数器告诉您什么?分析器告诉你什么?没有什么比 StringBuilder 更快的了,使用它的容量属性在 .NET 4 上没有太大的区别。还有一些你没有提到的东西。
-
据我所知,
StringBuilder是高效构建字符串的推荐方式。也许您可以使用流将文本直接发送到目的地,而不是将其构建为字符串?也许它的 T4 速度很慢。
标签: .net string performance t4 stringbuilder