Я использую StringTemplate для генерации некоторых XML-файлов из наборов данных. Иногда у меня есть более 100 000 записей в наборе данных, который перечисляется циклом в шаблоне. Он идет очень медленно (15-20 секунд на операцию), поэтому производительность мне не подходит.
Это пример того, как я использую ST для визуализации отчета:
using (var sw = new StringWriter())
{
st.Write(new StringTemplateWriter(sw));
return sw.ToString();
}
StringTemplateWriter - это простой класс записи, производный от IStringTemplateWriter без отступов.
Кстати, на экране отладки я вижу много таких странных сообщений:
"Первое случайное исключение типа 'antlr.NoViableAltException' произошло в StringTemplate.DLL"
в глубине отладки я обнаружил, что он рекурсивно анализирует мой шаблон и, если что-то не получается (не знаю, что именно), он генерирует исключение NoViableAltException для возврата из глубины стека обратно на поверхность, поэтому я предполагаю, что проблема заключается в том, что в использовании слишком много попыток-ловить-бросать.
Google не нашел в этом ничего полезного.
Основной вопрос: как уменьшить это количество исключений (кроме переписывания кода ST) и повысить производительность рендеринга шаблонов?