В вашем коде многое можно улучшить, но я понятия не имею, относятся ли эти улучшения к проблемам, с которыми вы сталкиваетесь.
По сути, существует разделение между Процессором - XsltCompiler - XsltExecutable - XdmNode - XsltTransformer, которое позволяет вам делиться всем, что может делиться. Вы всегда должны пытаться совместно использовать процессор (большинство приложений должны создать один процессор и использовать его повторно). Если вы запускаете одну и ту же таблицу стилей в нескольких исходных документах, XsltExecutable должен быть общим. Если вы запускаете разные таблицы стилей для одного и того же исходного документа, XdmNode должен быть общим. И так далее.
Что касается проблем с памятью, то, как и со всеми проблемами с производительностью, дьявол будет в деталях, и вам нужно углубиться, чтобы найти иголку в стоге сена, которая вызывает боль. Я менее знаком с инструментами .NET, чем с инструментами Java, но методология та же. Измерьте, как изменяется использование памяти по мере выполнения работы, чтобы вы могли выделить соответствующие шаги. Измерьте, как изменяется использование памяти при изменении входа, например, как это соотносится с размером исходного документа. И используйте инструменты анализа кучи, чтобы узнать, какие объекты на самом деле занимают память.
Очень часто вы можете решать проблему производительности с двух сторон. (а) выяснение того, какие аспекты рабочей нагрузки приводят к изменению наблюдаемой метрики (например, использования памяти)? (б) разбить метрику задачи верхнего уровня на более детализированные метрики, например, пространство, занимаемое скомпилированной таблицей стилей, пространство, занимаемое деревьями исходного документа, и пространство, занимаемое результирующим документом (который вы видите, для некоторых причина, чтобы держать в MemoryStream.)
Другая проблема, которая критична для проблем с производительностью, заключается в том, что они должны быть определены количественно. Вам необходимо количественно оценить ваши требования / ожидания и количественно определить фактическую метрику в соответствии с требованием. Примечательно, что ваш вопрос не содержит никакой цифровой информации.