Есть ли более эффективный средство обработки текста, чем TextWriter / StringBuilder
-
09-06-2019 - |
Вопрос
Для такой ситуации, как постепенный захват текста, например, если вы получали все вызовы output.write при рендеринге страницы, и они добавлялись в textwriter через stringbuilder.
Есть ли более эффективный способ сделать это?Предпочтительно что-то, что уже существует в dotnet?Особенно, если их общий размер превышает сто тысяч.Может быть, что-то больше похожее на массив страниц, а не на непрерывную память?
Решение
Я думаю, что StringBuilder - это наиболее эффективный способ добавления текста в .net.Чтобы быть более эффективным, вы можете указать начальный размер StringBuilder при его создании.
Другие советы
Это зависит от того, что вы делаете с этим текстом.
Если проблема связана с отслеживанием или протоколированием, я бы сказал, что лучше всего использовать ETW (Event Tracing for Windows).Это средство трассировки на уровне ядра, встроенное в Windows начиная с Windows 2000, и это намного, намного быстрее, чем выполнение файлового ввода-вывода.
Если вы не используете .NET 2.0, вам придется немного поработать с win32 API, чтобы использовать его, и вам нужно создать класс provider, который вы регистрируете в системе.Это немного сложно, но стоит затраченных усилий.
Если вы используете .NET 3.5, управляемые классы Etw можно найти в System.Диагностика.Отслеживание событий.
Это самое лучшее, что может быть.Вы можете использовать StringWriter, но он все равно записывается в StringBuilder