Pergunta

Para uma situação como capturar texto de forma incremental, por exemplo, se você estivesse recebendo todas as chamadas output.write quando uma página estava sendo renderizada e elas estivessem sendo anexadas a um textwriter por meio de um stringbuilder.

Existe uma maneira mais eficiente de fazer isso?Algo que já existe em dotnet de preferência?Principalmente se houver um tamanho total superior a cem mil.Talvez algo mais parecido com uma série de páginas em vez de memória contígua?

Foi útil?

Solução

Acho que StringBuilder é a maneira mais eficiente de acrescentar texto em .net.Para ser mais eficiente, você pode especificar o tamanho inicial do StringBuilder ao criá-lo.

Outras dicas

Depende do que você está fazendo com esse texto.

Se a preocupação for rastreamento ou registro em log, eu diria que sua melhor aposta é usar ETW (Event Tracing for Windows).É um recurso de rastreamento em nível de kernel integrado ao Windows desde o Windows 2000 e é muito, muito mais rápido do que fazer E/S de arquivos.

Se você não estiver usando o .NET 2.0, será necessário fazer um pouco de trabalho na API win32 para usá-lo e criar uma classe de provedor que você registrará no sistema.É um pouco complicado, mas vale o esforço.

Se você estiver usando o .NET 3.5, as classes Etw gerenciadas poderão ser encontradas em System.Diagnostics.Eventing.

Isso é o melhor que pode acontecer.Você pode usar um StringWriter, mas ele ainda está gravando em um StringBuilder

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top