【发布时间】:2011-02-13 08:22:38
【问题描述】:
我正在使用 StringTemplate 从数据集中生成一些 xml 文件。有时我在数据集中有超过 100,000 条记录,这些记录由模板中的循环枚举。它运行得很慢(每次操作需要 15-20 秒),所以性能对我不利。
这是我如何使用 ST 呈现报告的示例:
using (var sw = new StringWriter())
{
st.Write(new StringTemplateWriter(sw));
return sw.ToString();
}
StringTemplateWriter 是从 IStringTemplateWriter 派生的简单编写器类,没有缩进。
顺便说一句,在调试屏幕中,我看到很多这样奇怪的消息:
“StringTemplate.DLL 中发生了 'antlr.NoViableAltException' 类型的第一次机会异常” p>
在深度调试中,我发现它递归地解析我的模板,如果出现故障(不知道到底是什么),它会抛出 NoViableAltException 异常以从堆栈深处返回到表面,所以我猜问题是在使用过多的 try-catch-throw 时。
Google 没有发现任何有用的信息。
主要问题:如何减少这个异常的数量(除了重写ST的代码)并提高模板渲染的性能?
【问题讨论】:
标签: c# stringtemplate