Есть ли более эффективный спулер текста, чем TextWriter / StringBuilder - PullRequest
4 голосов
/ 17 сентября 2008

Для такой ситуации, как постепенный захват текста, например, если вы получали все вызовы output.write во время рендеринга страницы, и они добавлялись в textwriter через stringbuilder.

Есть ли более эффективный способ сделать это? Что-то, что существует в дотнетах, уже желательно? Особенно, если есть общий размер более ста к. Может быть, что-то вроде массива страниц, а не смежной памяти?

Ответы [ 3 ]

3 голосов
/ 12 ноября 2008

Это зависит от того, что вы делаете с этим текстом.

Если проблема заключается в отслеживании или регистрации, я бы сказал, что лучше всего использовать ETW (Event Tracing для Windows). Это средство трассировки на уровне ядра, встроенное в Windows начиная с Windows 2000, и оно намного, намного быстрее, чем файловый ввод / вывод.

Если вы не используете .NET 2.0, вам нужно немного поработать над API win32, чтобы создать класс провайдера, который вы зарегистрируете в системе. Это немного сложно, но стоит усилий.

Если вы используете .NET 3.5, управляемые классы Etw можно найти в System.Diagnostics.Eventing.

3 голосов
/ 17 сентября 2008

Я думаю, что StringBuilder является наиболее эффективным способом добавления текста в .net. Для большей эффективности вы можете указать начальный размер StringBuilder при его создании.

1 голос
/ 17 сентября 2008

Это так же хорошо, как и получается. Вы можете использовать StringWriter, но он все еще записывает в StringBuilder

...