Domanda

Per una situazione come l'acquisizione di testo in modo incrementale, ad esempio se ricevevi tutte le chiamate output.write durante il rendering di una pagina e queste venivano aggiunte a un textwriter su uno stringbuilder.

Esiste un modo più efficiente per farlo?Qualcosa che esiste già in dotnet preferibilmente?Soprattutto se la dimensione totale supera i centomila.Forse qualcosa di più simile a una serie di pagine piuttosto che a una memoria contigua?

È stato utile?

Soluzione

Penso che StringBuilder sia il modo più efficiente per aggiungere testo in .net.Per essere più efficiente puoi specificare la dimensione iniziale di StringBuilder quando lo crei.

Altri suggerimenti

Dipende da cosa stai facendo con quel testo.

Se il problema riguarda la tracciabilità o la registrazione, direi che la soluzione migliore è utilizzare ETW (Event Tracing for Windows).È una funzionalità di tracciamento a livello di kernel integrata in Windows a partire da Windows 2000 ed è molto, molto più veloce dell'I/O dei file.

Se non stai utilizzando .NET 2.0, devi fare un po' di lavoro sull'API win32 per usarlo e devi creare una classe provider da registrare nel sistema.È un po' complicato ma ne vale la pena.

Se si usa .NET 3.5, le classi Etw gestite sono disponibili in System.Diagnostics.Eventing.

E' quanto di meglio si possa desiderare.Puoi usare uno StringWriter ma sta ancora scrivendo in uno StringBuilder

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top