4

たとえば、ページがレンダリングされているときにすべての output.write 呼び出しを受け取り、それらが stringbuilder を介して textwriter に追加されている場合など、テキストを段階的にキャプチャするような状況の場合。

これを行うより効率的な方法はありますか?dotnet に既に存在するものが望ましいですか? 特に合計サイズが 100 k を超える場合。連続したメモリではなく、ページの配列のようなものでしょうか?

4

3 に答える 3

3

StringBuilder は、.net でテキストを追加する最も効率的な方法だと思います。より効率的にするために、作成時に StringBuilder の初期サイズを指定できます。

于 2008-09-17T08:40:20.450 に答える
3

それは、そのテキストで何をしているかによって異なります。

問題がトレースまたはログ記録である場合は、ETW (Event Tracing for Windows) を使用することをお勧めします。これは、Windows 2000 以降の Windows に組み込まれているカーネル レベルのトレース機能であり、ファイル I/O を実行するよりもはるかに高速です。

.NET 2.0 を使用していない場合は、それを使用するために win32 API の作業を少し行う必要があり、システムに登録するプロバイダー クラスを作成する必要があります。少し複雑ですが、努力する価値はあります。

.NET 3.5 を使用している場合、マネージド Etw クラスは System.Diagnostics.Eventing にあります。

于 2008-11-12T18:08:53.020 に答える
1

それはそれが得るのと同じくらい良いです。StringWriter を使用できますが、まだ StringBuilder に書き込み中です

于 2008-09-17T14:38:46.623 に答える