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 例外をスローしてスタックの深さからサーフェスに戻ることがわかったので、問題はの使用にあると思いますトライキャッチスローが多すぎる。
Google は、これに関して何の役にも立ちませんでした。
主な質問: この例外の数を減らし (ST のコードを書き直すことを除く)、テンプレート レンダリングのパフォーマンスを向上させる方法は?