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