我正在使用 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' 类型的第一次机会异常”
在深度调试中,我发现它递归地解析我的模板,如果出现故障(不知道到底是什么),它会抛出 NoViableAltException 异常以从堆栈深处返回到表面,所以我猜问题在于使用太多的尝试接球。
谷歌在这方面没有发现任何有用的东西。
主要问题:如何减少这个异常数量(除了重写ST的代码)并提高模板渲染的性能?